2013-02-14 78 views
0

如何在c#.net中的字符串中搜索字符串?例如,我需要在字符串「aa b bb aa bbb c」中查找所有出現(第一個和最後一個符號的位置)字符串「aa」(它是簡化的,即,aa是諸如「斑馬條」或「大」 )。我想,有什麼合適的方法是使用正則表達式類,即正則表達式.Net搜索字符串在字符串中的位置

Regex regex = new Regex("\\baa\\b"); 

然後regex.Matches(text)[0].Index是第一串的匹配。使用長度我會得到最後一個單詞的索引,然後我將從整個文本中提取這個單詞的句子。 或者我需要從他的書「計算字符串中的模式」中使用Bill Smith的方法?主要標準是編寫代碼的性能和易用性。

+0

我真的不明白你的問題(「所有的」,但「第一個和最後」)。你可以發表一個例子嗎?就像輸入「aa b bb aa bbb c」一樣,你需要輸出:「...」。 – groverboy 2013-02-14 23:47:59

+0

對於給定的輸入「aa b bb aa bbb c」,我希望輸出:aa [0.1],aa [8,9]其中[起始位置,最後位置]是每個單詞字符串中的位置。 – 2013-02-15 02:50:01

+0

謝謝。這聽起來像你想要搜索一個子字符串,例如。 「斑馬」不是一個文本模式,例如。一個或多個「a」字符的連續序列。然後'正則表達式'是矯枉過正,因爲@VladL建議你最好使用'String.IndexOf'。 – groverboy 2013-02-15 03:05:21

回答

0

最簡單的方式找到第一次出現的索引是使用String.IndexOf梅索德和String.LastIndexOf找到最後

+0

最糟糕的情況是O(search_pattern.Length * all_text.Length),不是嗎?正則表達式比這個簡單的實現更快嗎? – 2013-02-14 19:04:47

+0

@SergeyPetrovsky正則表達式也解析文本。但我相信,indexOf方法比任何正則表達式都快,因爲正則表達式將搜索所有的出現,而字符串方法只有第一個 – VladL 2013-02-14 19:25:32

+0

但我需要查找所有出現。所以我將使用帶有兩個參數的IndexOf(從前一個匹配位置開始搜索) – 2013-02-15 02:52:16

相關問題