我有一个看起来像这样的文本文件:
(' STEAM_1:0:XXXXXXXX',' User1',' Germany',73677,0,0,105,151,105,&#39 ; 2015年9月5日&#39), (' STEAM_1:0:XXXXXX',' User2','比利时',64005,3,100,161,277,161,' 2015- 11-08&#39), (' STEAM_1:0:XXXXXXX',' User3','丹麦',52226,0,0,84,146,84,' 2015- 11-05&#39), (' STEAM_1:0:XXXXXXXXX',' User4',' Denmark',48300,0,0,98,291,98,' 2015- 09-29&#39), (' STEAM_1:0:XXXXXXXX',' User5',' Denmark',47817,4,1000,104,272,104,' 2015- 11-08&#39),
如何提取" STEAM_1:0:XXXXXXX"一个全新的文件没有别的吗?我有250个用户。
我对编程非常陌生,但我尝试了一些事情,但没有任何效果。 任何建议将不胜感激。
答案 0 :(得分:1)
使用Regex
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();
}
}
}
答案 1 :(得分:0)
我会做这样的事情
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.aspx 和https://msdn.microsoft.com/en-us/library/db5x7c0d(v=vs.110).aspx
答案 2 :(得分:0)
不是最优雅的解决方案,但它有效!
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());
}