[英]C# string manipulation handling white space with \r\n inbetween
我正在尝试找到一条语句,该语句可以匹配任意数量的空格,这些空格之间也可能有换行符,也可能没有
字符串示例:
value \r\n item
我试图在字符串上使用IndexOf()来获取单词“ value”的索引,然后再获取单词“ item”,它必须与value匹配,然后是item,因为两者都在不同的上下文中使用。
到目前为止,这是我的声明:
length = (allItems.IndexOf("value (some white space) item") + "value (some white space) item".Length) - startIndex;
希望这是有道理的,并预先感谢。
使用正则表达式可以很容易地做到这一点:
Regex.Matches("value \r\n item", @"value(\s)*item")
您指定了“任意数量的空格”,但我怀疑您可能表示“至少一个空格”(即,IE不包括"valueitem"
),在这种情况下,您应该使用@"value(\\s)+item"
作为模式(使用+
而不是*
)。
这为您提供了索引:
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"));
}
感谢@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);
删除不必要的换行符。 然后,我可以匹配“值项”并获取索引。
谢谢你们的答案。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.