C#字符串操作处理空格,其中\ r \ n在\ between之间

时间:2013-11-18 11:09:02

标签: c# string

我正在尝试找到一个可以匹配任意数量的空格的语句,这些空格可能也可能没有换行符

字符串示例:

value   \r\n         item

我试图在字符串上使用IndexOf()来获取单词“value”的索引,后跟单词“item”,它必须匹配值后跟item,因为它们也在不同的上下文中使用。

这是我到目前为止的陈述:

length = (allItems.IndexOf("value (some white space) item") + "value (some white space) item".Length) - startIndex;

希望它有意义并提前感谢。

3 个答案:

答案 0 :(得分:3)

这可以通过正则表达式轻松完成:

Regex.Matches("value     \r\n    item", @"value(\s)*item")

你指定了“任意数量的空格”,但我怀疑你可能意味着“至少有一个空格”(IE不包括"valueitem"),在这种情况下你应该使用@"value(\s)+item"作为你的模式(使用一个+而不是*)。

答案 1 :(得分:1)

这可以获得索引:

string s = "value   \r\n    item";     
string pattern = @"value\s+item";
if (System.Text.RegularExpressions.Regex.IsMatch(s, pattern)) {
    System.Console.WriteLine(s.IndexOf("item"));
}

答案 2 :(得分:0)

感谢@Rik和@Tom Fenech提供的模式我可以通过以下方式找到解决问题的方法:

   string pattern = "\\s+";
   string replacement = " ";
   Regex rgx = new Regex(pattern);
   string test = rgx.Replace(str, replacement);

要从字符串中删除所有冗余空格(但仍留有至少一个空格)并且:

    test = test.Replace("\r\n", String.Empty);

删除不必要的换行符。然后我可以匹配“价值项目”并获得索引。

感谢你们的答案。