使用索引查找字符串中的任何单词

时间:2011-11-05 23:40:20

标签: c# algorithm word

我们说我有字符串:

-dog--cat--d--

我想找到该字符串中的所有单词,长度应大于1。

但更重要的是,我想知道每个单词的第一个和最后一个索引。

我怎么能这样做?

我在考虑创建struct。它可以存储一些数据(索引开始和停止,单词,长度等)

但我真的不知道如何找到任何方法来获得这些话。

到目前为止,我只创建了存储值为0和1的数组(如果元素为' - ',则为0,否则为1)。 有谁能够帮我? :)

2 个答案:

答案 0 :(得分:2)

您可以使用正则表达式@"\p{L}{2,}"查找2个或更多连续字母:

foreach (Match match in Regex.Matches(s, @"\p{L}{2,}")) {
    // match.Index, match.Value, etc..
}

答案 1 :(得分:-1)

您可能最好使用正则表达式过滤掉任何非字母并返回单词数组

      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++;
      }