Linq: поиск строки для всех вхождений нескольких пробелов - PullRequest
2 голосов
/ 29 апреля 2010

У меня есть строка, и я хочу найти положение всех вхождений нескольких пробелов. Я пишу проверку пунктуации. Я хотел бы упорядочить эту операцию, используя параллельный linq, но пока я просто ищу метод linq, чтобы начать работу.

Ответы [ 3 ]

6 голосов
/ 29 апреля 2010

В дополнение к ответу Фреду, Регекс сделал бы это хорошо. Regex.Matches возвращает MatchCollection, который является (слабо типизированным) перечисляемым. Это может быть Linq-ified после использования Cast extension :

Regex.Matches(input,@" {2,}").Cast<Match>().Select(m=>new{m.Index,m.Length})
2 голосов
/ 29 апреля 2010
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;

Это даст вам все стартовые индексы, где встречаются несколько пробелов. Это красиво, но я уверен, что это работает.

edit: Нет необходимости в соединении. Это лучше.

  var s = from i in Enumerable.Range(0, test.Length-1)
                where test[i] == ' ' && (i == 0 || test[i - 1] != ' ') && (test[i+1] == ' ')
                    select i;
2 голосов
/ 29 апреля 2010

это было бы лучше с регулярным выражением

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...