C# 从以 X 开头的文本文件中获取所有单词

C# Get all words from text file starting with X

我有一个如下所示的文本文件:

('STEAM_1:0:XXXXXXXX', 'User1', 'Germany', 73677, 0, 0, 105, 151, 105, '2015-09-05'), ('STEAM_1:0:XXXXXX', 'User2', 'Belgium', 64005, 3, 100, 161, 277, 161, '2015-11-08'), ('STEAM_1:0:XXXXXXX', 'User3', 'Denmark', 52226, 0, 0, 84, 146, 84, '2015-11-05'), ('STEAM_1:0:XXXXXXXXX', 'User4', 'Denmark', 48300, 0, 0, 98, 291, 98, '2015-09-29'), ('STEAM_1:0:XXXXXXXX', 'User5', 'Denmark', 47817, 4, 1000, 104, 272, 104, '2015-11-08'),

如何将 "STEAM_1:0:XXXXXXX" 和其他内容提取到一个全新的文件中?我有 250 个用户。

我对编程还很陌生,但我尝试了一些方法,但没有任何效果。 任何建议将不胜感激。

我会做这样的事情

 List<string> formattedList = new List<string>();

        //read from .txt file
        using (StreamReader sr = new StreamReader("Source path.txt"))
        {
            string line = sr.ReadLine();

            //get index of second occurance of the ' char.
            int length = line.IndexOf("'", 2); 

            //start 2 indexes in and return the substring until second 
            //occurance of ' char
            string formattedLine = line.Substring(2, length);
            formattedList.Add(formattedLine);

        }

        //write to .txt file
        using (StreamWriter sw = new StreamWriter("Destination Path.txt"))
        {
            foreach (var line in formattedList)
            {
                sw.WriteLine(line);
            }
        }

阅读更多信息 https://msdn.microsoft.com/en-us/library/8bh11f1k.aspxhttps://msdn.microsoft.com/en-us/library/db5x7c0d(v=vs.110).aspx

使用正则表达式

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.IO;
using System.Text.RegularExpressions;

namespace ConsoleApplication1
{
    class Program
    {
        const string FILENAME = @"c:\temp\test.txt";
        static void Main(string[] args)
        {
            string input = File.ReadAllText(FILENAME);
            string pattern = @"\('(?'steam'[^']*)";
            MatchCollection matches = Regex.Matches(input, pattern, RegexOptions.Singleline);
            foreach (Match match in matches)
            {
                Console.WriteLine(match.Groups["steam"]);
            }
            Console.ReadLine();
        }
    }
}
​

这不是最优雅的解决方案,但它确实有效!

    static void Main(string[] args)
    {
        var text =
@"('STEAM_1:0:XXXXXXXX', 'User1', 'Germany', 73677, 0, 0, 105, 151, 105, '2015-09-05'),
('STEAM_1:0:XXXXXX', 'User2', 'Belgium', 64005, 3, 100, 161, 277, 161, '2015-11-08'),
('STEAM_1:0:XXXXXXX', 'User3', 'Denmark', 52226, 0, 0, 84, 146, 84, '2015-11-05'),
('STEAM_1:0:XXXXXXXXX', 'User4', 'Denmark', 48300, 0, 0, 98, 291, 98, '2015-09-29'),
('STEAM_1:0:XXXXXXXX', 'User5', 'Denmark', 47817, 4, 1000, 104, 272, 104, '2015-11-08'),";

        var split = text.Split(new[] {Environment.NewLine}, StringSplitOptions.RemoveEmptyEntries);

        var sb = new StringBuilder();
        foreach (string line in split)
        {
            var firstCommer = line.IndexOf(",");

            sb.AppendLine(line.Substring(2, firstCommer - 3));
        }


        File.WriteAllText(@"c:\temp\out.txt", sb.ToString());
    }