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.aspx
和 https://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());
}
我有一个如下所示的文本文件:
('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.aspx 和 https://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());
}