C# 获取特定字符串

C# 获取特定字符串,c#,C#,我有7封这样的电子邮件: 每封电子邮件都有不同的详细信息,但格式相同(这是一封自动电子邮件) 我想获取所选(蓝色)字符串 我所尝试的: { 字符串emailbody=mail.emailbody; 字符串文本=电子邮件正文; 字符串[]分隔符={“调用方:”,“\r\n优先级:”}; string[]words=text.Split(分隔符,StringSplitOptions.RemoveEmptyEntries); foreach(单词中的var单词) { 系统控制台写入线(word);

我有7封这样的电子邮件:

每封电子邮件都有不同的详细信息,但格式相同(这是一封自动电子邮件)

我想获取所选(蓝色)字符串

我所尝试的:

{
字符串emailbody=mail.emailbody;
字符串文本=电子邮件正文;
字符串[]分隔符={“调用方:”,“\r\n优先级:”};
string[]words=text.Split(分隔符,StringSplitOptions.RemoveEmptyEntries);
foreach(单词中的var单词)
{
系统控制台写入线(word);
}
emailbody
在代码中有一封邮件

请告诉我如何取那根线

谢谢。

使用以下代码:

var startString = "replication\r\nCaller:wertyui\r\nPriority:"; \\ mail.EmailBody
var startIndex=startString.IndexOf("\r\nCaller:")+2;
var endIndex=startString.IndexOf("\r\nPriority:");
var callerName= startString.Substring(startIndex, endIndex-startIndex);
或者也可以通过这种方式使用(不使用\r\n):


给这只猫剥皮的方法很多。这里有一种使用split的方法:

string lines = emailBody.Split("\r\n".ToCharArray(), StringSplitOptions.RemoveEmptyEntries);

string caller = lines.First(x => x.StartsWith("Caller:")).Replace("Caller: ", "");
使用正则表达式的人:

var r =  new Regex("Caller: (?<c>.*)\r?$", RegexOptions.Multiline);
var m = r.Match(emailBody);

string caller = m.Groups["c"].Value;
var r=new Regex(“调用者:(?*)\r?$”,RegexOptions.Multiline);
var m=r.Match(emailBody);
字符串调用者=m.Groups[“c”].值;

我希望这段代码能帮助您:)


如果所有内容都由新行分隔,则可以在“\n”上使用拆分函数,然后在数组中查找以Caller开头的条目。从那里,可以在“:”上进行另一次拆分,然后获取数组中的最后一个条目。我认为您的分隔符不匹配。“\r\n”是正文中的真实文本,因此您应该将其声明为@“\r\n…”或“\\r\\n”。其次,优先级在换行符上,因此您也应该添加“\r\n”。因此,总共“\\r\n\r\n输入…”只是为了清楚该部分\r\n..被转换为两个字节,分别为回车和换行符。请参阅Environment.NEWLINE的说明。能否编辑您的问题并给出要计算的确切字符串?您的答案有缺陷。字符串不是“\r\n…”,而是@”\r\n..当然,除非他从Visual Studio inspector复制并粘贴,这将把CR和LF转换为“\r\n…”。但是“优先级”在下一行,这将表明他的“\r\n”是4个字节(“\”、“r”、“\”、“n”)我们需要知道整个代码。电子邮件是如何加载的。但它仍然可以转换为\r\n。是的,问题需要更准确。
var r =  new Regex("Caller: (?<c>.*)\r?$", RegexOptions.Multiline);
var m = r.Match(emailBody);

string caller = m.Groups["c"].Value;
string text = "your email";
//here by using Split method i'll take all text before "Caller:" in first index of array and all text after this word in second index in the same array.
string[] afterSplit = text.Split("Caller:");
//here i have ignored first index because i want text after "Caller:" also i have removed text which start with index of "\r\n"
string afterSplitAndRemove = afterSplit[1].Remove(afterSplit[1].IndexOf("\r\n"));