Поиск любых слов в строке с ее индексами - PullRequest
0 голосов
/ 06 ноября 2011

Допустим, у меня есть строка:

-dog--cat--d--

Я хотел бы найти все слова из этой строки, а длина должна быть больше 1.

Но более того, я хотел бы знать первый и последний индекс каждого из слов.

Как я мог это сделать?

Я думал о создании struct.Он может хранить некоторые данные (индекс начала и конца, слова, длина и т. Д.)

Но я действительно не знаю, как найти какой-либо способ получить эти слова.

Пока что ятолько созданный массив, хранящий значения 0 и 1 (если элемент равен '-', то 0 или 1).Кто-нибудь может мне помочь?:)

Ответы [ 2 ]

2 голосов
/ 06 ноября 2011

Вы можете использовать регулярное выражение @"\p{L}{2,}", чтобы найти 2 или более последовательных букв:

foreach (Match match in Regex.Matches(s, @"\p{L}{2,}")) {
    // match.Index, match.Value, etc..
}
0 голосов
/ 06 ноября 2011

Возможно, вам лучше всего использовать Регулярные выражения , чтобы отфильтровать любые не-буквы и вернуть массив слов

      String sourcestring = "-dog--cat--d--";
      Regex re = new Regex(@"\w+");
      MatchCollection mc = re.Matches(sourcestring);
      int mIdx=0;
      foreach (Match m in mc)
       {
        for (int gIdx = 0; gIdx < m.Groups.Count; gIdx++)
          {
            Console.WriteLine("[{0}][{1}] = {2}", mIdx, re.GetGroupNames()[gIdx], m.Groups[gIdx].Value);
          }
        mIdx++;
      }
...