Linq:在字符串中搜索所有多个空格

时间:2010-04-29 00:04:22

标签: c# linq string

我有一个字符串,我想找到所有多个空格出现的位置。我正在写一个标点符号检查器。我想使用并行linq来分离这个操作,但在此期间我只是想找到linq方法让我开始。

3 个答案:

答案 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;