2016-05-17 273 views
4

我想將一個字符串分解等。無論在'字符的情況下,除非在它(?')前一個問號 - 在這種情況下我想分割。
要做到這一點,最好的方法是什麼?
我很喜歡這樣分裂(如果分隔符是一個字符):將字符串拆分爲「'」而不是「?」 「

message.Split(New Char() {"'"C}) 

而且如果它是一個字符串:

message.Split(New String() {"break"}, StringSplitOptions.None) 

難道我那麼具有給定的數組中測試每個項目看看它是否以? char結尾,然後再次連接字符串 - 這看起來不是最佳解決方案..?
你是否必須做一個正則表達式,你將如何做到這一點在vb.net?

回答

5

您將需要一個Regex.Split(?<!\?)'正則表達式:

Regex.Split(message, "(?<!\?)'") 

看看字面?正好出現在單引號左側的regex demo

(?<!\?)負回顧後會失敗的比賽。

在VB.NET,你可以使用LINQ刪除你這個表達式拆分得到任何空字符串:

Dim message As String = "'sss?'ss'" 
Dim my_result() As String = Regex.Split(message, "(?<!\?)'") _ 
     .Where(Function(strn As String) String.IsNullOrWhiteSpace(strn) = False) _ 
     .ToArray() 
Console.WriteLine(String.Join(", ", my_result)) 
' => sss?'ss 

enter image description here

+2

感謝的人!那正是我所期待的。 –