提前致谢。我目前拥有的是一个选择文本文件的文件夹框。文本文件内容看起来像example.txt,它需要看起来像output.txt。注意:字符串CoreDBConnectString=
一直到;Database=Source_DB.
example.txt [Information] Date= CreatedBy= Unique=eqwe-asd-123-as12-3 CoreDataSource= CoreDBConnectString=Provider=SQLOLEDB.1;Server=Server;Integrated Security=SSPI;Database=Source_DB NoteDataSource=SQLServer NoteDBConnectString=Provider=Provider=SQLOLEDB.1;Server=Server;Integrated Security=SSPI;Database=Source_DB CoreDBCaseID=99 NoteDBCaseID=99 Output.txt Table=99 (Comes from CoreDBCaseID) Server=Server (comes from the string CoreDBConnectString=) Security=SSPI (comes from the string CoreDBConnectString=) Database=Source_DB (comes from the string CoreDBConnectString=)
答案 0 :(得分:3)
您可以这样做:
// Load the file contents
string contents = File.ReadAllText("example.txt");
// Obtain the data using regular expressions
string id = string id = Regex.Match(
contents,
@"CoreDBCaseID=(?<id>\d+)").Groups["id"].Value;
string server = string.Empty; // Add regex here
string security = string.Empty; // Add regex here
string database = string.Empty; // Add regex here
// Save the data in the new format
string[] data = new string[] {
String.Format("Table={0}", id),
String.Format("Server={0}", server),
String.Format("Security={0}", security),
String.Format("Database={0}", database)
};
File.WriteAllLines("output.txt", data);
快速了解这些正则表达式:
Regular Expression Cheat Sheet
您可以使用positive lookahead停止匹配(;)字符。像这样:
@ “安全性=([\ d] +?)(=;?)”
答案 1 :(得分:2)
这是一个INI文件,这是一个非常古老的学校。如今,我们编程人员使用XML代替。因此,C#中没有对INI文件的内置支持。
您可以P/Invoke GetPrivateProfileString阅读数据。
如果您不介意信息部分标题,可以使用WritePrivateProfileString写出新数据:
[Information]
Table=99
Server=Server
Security=SSPI
Database=Source_DB
This CodeProject article on INI-file handling with C#可能会有所帮助。
答案 2 :(得分:0)
我会使用StreamReader.ReadLine
和RegEx
的组合来读取每一行并提取相应的信息。
答案 3 :(得分:0)
打开文件并一次读取一行。您可以使用正则表达式(cheat sheet)来匹配和解析您要查找的文本。
答案 4 :(得分:0)
INI文件是旧的skool。因此,有人已经为它编写了一个类:http://www.codeproject.com/KB/cs/readwritexmlini.aspx。链接的类读取XML,INI,注册表和配置文件。