从文件中提取文本c#

时间:2015-09-28 13:14:48

标签: c# email visual-studio-2013 streamreader

我有一个文件.mail包含:

`

FromFild=xxx@gmail.com
ToFild=yyy@gmai.com
SubjectFild=Test
Message=
<b><font size="3" color="blue">testing</font> </b>
<table>
<tr>
    <th>Question</th>
    <th>Answer</th>
    <th>Correct?</th>
</tr>
<tr>
    <td>What is the capital of Burundi?</td>
    <td>Bujumburra</td>
    <td>Yes</td>
</tr>
<tr>
    <td>What is the capital of France?</td>
    <td>F</td>
    <td>Erm... sort of</td>
</tr>
</table>
  Message=END

 #at least one empty line needed at the end!

`

我需要提取并保存Message =和Message = END之间的文本。 我尝试使用split('=')。Last / First()。不好。我不能使用Substring,因为它只接受int ofIndex。我是菜鸟,我想不出溶剂。你能给点提示吗?

2 个答案:

答案 0 :(得分:1)

您可以使用此正则表达式:

/Message=(?<messagebody>(.*))Message=END/s

然后获取消息的代码:

string fileContent; //The content of your .mail file
MatchCollection match = Regex.Matches(fileContent, "/Message=(?<messagebody>(.*))Message=END/s");
string message = match[0].Groups["messagebody"].Value;

答案 1 :(得分:0)

我将假设文本文件或您正在寻找的信息中没有固定数量的行,我可以依赖。

        string prefix = "Message=";
        string postfix = "Message=END";

        var text = File.ReadAllText("a.txt");
        var messageStart = text.IndexOf(prefix) + prefix.Length;
        var messageStop = text.IndexOf(postfix);
        var result = text.Substring(messageStart, messageStop - messageStart);