2011-11-05 25 views
0

比方說,我有字符串:找到任何言語在其索引的字符串

-dog--cat--d--

我想找到該字符串的所有單詞,並且長度應大於1

但更重要的是,我想知道每個單詞的首尾索引。

我該怎麼做?

我正在考慮創建結構。它可以存儲一些數據(索引開始和停止,單詞,長度等)

但我真的不知道如何找出任何方式來獲取這些單詞。

到目前爲止,我只創建了數組存儲值0和1(如果元素是' - ',那麼0 else 1)。 任何人都可以幫助我嗎? :)

+1

如何定義「單詞」?一個包含2個或更多Unicode字母的序列? –

+0

根據我的理解,[後綴樹](http://en.wikipedia.org/wiki/Suffix_tree)符合您的要求,這可能與您的意思有所不同。 –

+0

@MarkByers,我定義了「 - 」之間的序列Unicode字母,例如。 '''-dog-「=>狗' – deadfish

回答

2

您可以使用正則表達式@"\p{L}{2,}"找到2個或多個連續的字母組成的數組:

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

將它改爲'@「\ p {L} {1,}」'讓'd'出現,或者只是'@「\ w +」'到選擇單詞 – John

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

'我想知道每個單詞的第一個和最後一個索引' –

+0

@LB感謝downvote考慮到你可以使用'System.Text.RegularExpressions.Match'類過濾單詞並獲得像索引這樣的信息... – John

相關問題