在C#中每次在特殊字符之前截取字符串

3

我有一些长度不同的字符串。 例如:

str1 = "This is new job ----First Message----- This is reopened ";
str2 = "Start Process ----First Message----- Is this process closed? <br/> no ----First Message-----";

现在这些字符串中总是包含 "----First Message-----"。 我需要的是将字符串修剪或分割,以便只留下第一次出现 "----First Message-----" 左边的部分。
所以对于 str1,结果应该是 "This is new job"。 对于 str2,结果应该是 "Start Process"
在C#中如何实现呢?

可能是获取子字符串 - 某个字符之前的所有内容的重复问题。 - Michael Freidgeim
3个回答

13
string stringStart = str1.Substring(0, str1.IndexOf("----First Message-----"));

这将返回您想要的字符串,因此如果您想稍后使用它,请确保在变量中捕获它等。它不会修改str1的内容。http://msdn.microsoft.com/en-us/library/aka44szs.aspx - Josh P
@JoshP 感谢您指出这一点;我已经编辑了答案以考虑到它。 - phoog

2
String result = input.Substring(0, input.IndexOf('---FirstMessage-----'));

实际上,为教学目的…
private String GetTextUpToFirstMessage( String input ){
    const string token = "---FirstMessage-----";
    return input.Substring(0, input.IndexOf(token));
}

0
这听起来像是正则表达式的工作!!!
尝试以下代码。不要忘记在顶部包含using System.Text.RegularExpressions;语句。
    Regex regex = new Regex(@"^(.*)----FirstMessage----$");
    string myString = regex.Match(str1).Value;

你能帮我看一下这个问题吗?http://stackoverflow.com/questions/19131758/how-to-split-a-string-into-an-array-of-strings - Anjali
现在你有两个问题.... 在结尾处的 $ 将确保你不会与问题中的数据匹配。 - Dominic Cronin

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接