我正在阅读看起来像这样的文件的内容
[1]
Message=my string here
EffDate=1/1/1995
DeactDate=
Modified=
Note=
[2]
Message=my other string here
EffDate=1/1/1995
DeactDate=
Modified=
Note=
我希望在Message=
之后获取字符串,但仅限于该行的结尾。我不想要任何日期或笔记或任何东西。
我希望将两个消息放入一个字符串数组或类似的东西。有没有办法做到这一点?
感谢任何帮助。
答案 0 :(得分:2)
这是您需要的工作代码:
var d = File.ReadAllLines(filePath);
var t = d.Where(g => g.Contains("Message"));
string[] splited;
foreach (var item in t)
{
splited = item.Split(new string[] { "Message=" }, StringSplitOptions.None);
Console.WriteLine(splited[1]);
}
如果您有任何疑惑,请告诉我。
答案 1 :(得分:1)
您可以使用以下方法。
阅读您的文件,最好使用方法ReadAllLines,请查看link
阅读完毕后,您将获得一系列字符串,每行一项。
我希望这是可以理解的。
答案 2 :(得分:1)
你可以做这样的事情
string[] getMessages(string file) {
List<string> messages = new List<string>();
string[] lines = file.ReadAllLines(); /* read the lines */
foreach(string line in lines) {
string[] parts = line.Split('=');
string contentPart = String.Join("=", parts.Skip(1).ToArray();
if(parts[0]=="Message")
messages.Add(contentPart);
}
return messages.ToArray();
}
尽管记住这不是很优雅也不是有效的解决方案。最好解析整个文件,填充一组结构,然后对其进行操作。
给出一个理由为什么我使用了Split
而不是其他任何东西:在比较并尝试列出的不只是Message
时,使用{会变得无效{1}}或StartsWith
。
答案 3 :(得分:1)
如果您已经在阅读文件,那么您只需将第一行存储在包含字符串Message
的字符串中,而不是将该字符串与=
分开并存储在列表中。
string strFilePath = @"D:\Maraj\Work\Ajax.txt";
FileStream objFS = new FileStream(strFilePath, FileMode.Open);
List<string> list = new List<string>();
using (StreamReader Sr = new StreamReader(objFS))
{
while (Sr.ReadLine() != null)
{
string line = Sr.ReadLine();
if(line.Contains("Message=")
{
list.Add(line .Split('=')[1]);
}
}
objFS.Close();
}
答案 4 :(得分:0)
如果是,请使用Substring()方法
获取消息 var messages = File.ReadAllLines("M:\\m.txt");
List<string> result = new List<string>();
foreach (var msg in messages)
{
var key = "Message=";
if (msg.StartsWith(key))
result.Add(msg.Substring(msg.IndexOf(key) + key.Length));
}
答案 5 :(得分:0)
您只需要一个简单的for
循环:
string[] messages = File.ReadAllLines("data.txt"); //read all lines
for (int i = 1; i < messages.Length; i = i + 7) //just get the line containing "Message"
{
string message = messages[i].Split('=')[1];
//now you have the message, save it where ever you want.
}
答案 6 :(得分:0)
这应该足够了:
string[] messages = File.ReadLines("fileName.txt")
.Where(line => line.StartsWith("Message="))
.Select(line => line.Split(new char[] { '=' }, 2)[1])
.ToArray();