比方說,我有字符串:找到任何言語在其索引的字符串
-dog--cat--d--
我想找到該字符串的所有單詞,並且長度應大於1
但更重要的是,我想知道每個單詞的首尾索引。
我該怎麼做?
我正在考慮創建結構。它可以存儲一些數據(索引開始和停止,單詞,長度等)
但我真的不知道如何找出任何方式來獲取這些單詞。
到目前爲止,我只創建了數組存儲值0和1(如果元素是' - ',那麼0 else 1)。 任何人都可以幫助我嗎? :)
比方說,我有字符串:找到任何言語在其索引的字符串
-dog--cat--d--
我想找到該字符串的所有單詞,並且長度應大於1
但更重要的是,我想知道每個單詞的首尾索引。
我該怎麼做?
我正在考慮創建結構。它可以存儲一些數據(索引開始和停止,單詞,長度等)
但我真的不知道如何找出任何方式來獲取這些單詞。
到目前爲止,我只創建了數組存儲值0和1(如果元素是' - ',那麼0 else 1)。 任何人都可以幫助我嗎? :)
您可以使用正則表達式@"\p{L}{2,}"
找到2個或多個連續的字母組成的數組:
foreach (Match match in Regex.Matches(s, @"\p{L}{2,}")) {
// match.Index, match.Value, etc..
}
將它改爲'@「\ p {L} {1,}」'讓'd'出現,或者只是'@「\ w +」'到選擇單詞 – John
你很可能是最好的使用正則表達式過濾掉任何非字母和單詞返回
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++;
}
'我想知道每個單詞的第一個和最後一個索引' –
@LB感謝downvote考慮到你可以使用'System.Text.RegularExpressions.Match'類過濾單詞並獲得像索引這樣的信息... – John
如何定義「單詞」?一個包含2個或更多Unicode字母的序列? –
根據我的理解,[後綴樹](http://en.wikipedia.org/wiki/Suffix_tree)符合您的要求,這可能與您的意思有所不同。 –
@MarkByers,我定義了「 - 」之間的序列Unicode字母,例如。 '''-dog-「=>狗' – deadfish