2011-07-23 58 views
1

的DELIM字符串如果我有一個像記號化處理字符串

一個字符串「這是將被這個那個被分裂的字符串」

我想獲得的分割結果作爲

  1. 「是將由被分裂的字符串」
  2. 「並且」
  3. :「這是一個字符串」
  4. 「將由該被分割和」

1和2由「這個」 3和4由「那個」

我的解決辦法是分割分裂使用字符串映射字符串並將結果存儲在同一個類型字符串的另一個映射字符串中。然而,對於更復雜和更長的文本,存儲在地圖中的結果會重複出現,即如上面的1和3中重複的子字符串「是字符串」,並且該冗餘產生不正確的統計結果。

您能否提供一個整潔的更好的解決方案來使用不同長字符串的分隔符來標記長字符串?

+2

C,C++和C#都是不同的語言。你使用的是一個不是你將用於其他人。那麼你想要哪種語言的答案? –

+2

你在用什麼語言工作?這實際上與Windows API有什麼關係? – Puppy

+0

以上任何一種語言都很好,我很抱歉忘記說我可能只需要僞代碼或解釋的方法來做到這一點。 –

回答

9
string myString = "This is a string that will be splitted by this and that"; 
string foo = myString.ToUpper(); 

string[] byThis = foo.Split(new string[] { "THIS" }, StringSplitOptions.RemoveEmptyEntries); 
string[] byThat = foo.Split(new string[] { "THAT" }, StringSplitOptions.RemoveEmptyEntries); 

string[] all = foo.Split(new string[] { "THAT", "THIS" }, StringSplitOptions.RemoveEmptyEntries); 

或者你可以使用正則表達式爲

string[] all = System.Text.RegularExpressions.Regex.Split(myString, "your pattern", System.Text.RegularExpressions.RegexOptions.IgnoreCase); 
+0

非常感謝您的代碼。如果我不被允許使用正則表達式,但只有列表,數組,字典,你可以建議什麼方法? –

+1

@Tokenized:不客氣,如果這個答案回答你的問題,那麼你可以[接受它](http://meta.stackexchange.com/questions/5234/how-does-accepting-an-answer-work/5235# 5235)所以其他人會知道它修復了你的問題。 –