2016-05-17 20 views
4

私は文字列を分割したい - 分割する必要はありませその場合には、私はない
これを行う最善の方法は何ですか?
私は(区切り文字がcharの場合)ので、のように分割しています:
文字列を「 '」で分割しますが、「?」では分割しません。 「それ(<code>?'</code>)の前に疑問符がある<strong></strong>ない限り<code>'</code>文字が存在しているwhereever

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

おかげで男を!それはまさに私が探していたものでした。 –

関連する問題

 関連する問題