我有一个字符串,我想找到所有多个空格出现的位置。我正在写一个标点符号检查器。我想使用并行linq来分离这个操作,但在此期间我只是想找到linq方法让我开始。
答案 0 :(得分:6)
继Fredou的回答之后,正则表达式会做得很好。 Regex.Matches返回一个MatchCollection,它是一个(弱类型)Enumerable。使用Cast<T> extension后,这可能是Linq-ified:
Regex.Matches(input,@" {2,}").Cast<Match>().Select(m=>new{m.Index,m.Length})
答案 1 :(得分:2)
使用正则表达式会更好
答案 2 :(得分:2)
var s = from i in Enumerable.Range(0, test.Length)
from j in Enumerable.Range(0, test.Length)
where test[i] == ' ' && (i == 0 || test[i - 1] != ' ') &&
(test[j] == ' ' && j == (i + 1))
select i;
这将为您提供出现多个空格的所有起始索引。它很漂亮,但我很确定它有效。
编辑:不需要加入。这样更好。
var s = from i in Enumerable.Range(0, test.Length-1)
where test[i] == ' ' && (i == 0 || test[i - 1] != ' ') && (test[i+1] == ' ')
select i;