2017-08-03 125 views
1

我試着在Visual Studio上調用split函數,如下所示,我希望它在分割後返回數組中的2個項目,但是vb從我的編碼中返回5個結果。這是考慮VB問題或我的編碼問題?視覺工作室分裂功能問題

整個字符串是「NAME」: 「愛麗絲」

Dim a As String = """NAME"":""ALICE""" Dim b() As String = a.Split(""":")

輸出I預計在陣列之後分裂
(1)「NAME
(2)「愛麗絲」

enter image description here

+0

怎麼樣的正則表達式? – Codexer

+1

你真的期望''NAME',''ALICE''的輸出?(注意你的問題中額外的''') – djv

+0

@djv我注意到了這個以及... – Codexer

回答

3

您使用this overload of String.Split(Char[])。請注意,需要一個字符數組。字符串可以轉換爲字符數組(這就是爲什麼你可以編譯),但它不是平等的。嘗試將Option Strict On放在代碼的頂部。它不會像你已經有的那樣編譯:)

當傳遞單個字符串時,字符串中的每個字符都用於分割。包括每個"在您的論點中,":。它將拆分爲":。您可以通過使用this overload of String.Split(String[], SplitStringOptions)將字符串數組傳遞給Split來繞過它。通過一個單一的元素陣列像這樣

Dim b = a.Split({""":"}, StringSplitOptions.RemoveEmptyEntries) 

enter image description here

是的,這正是如你所說,

  • 「NAME
  • 「驢友」

你想要擺脫結果中的引號?你可以這樣做

Dim b = a.Split({":", """"}, StringSplitOptions.RemoveEmptyEntries) 

enter image description here

那麼它的這個,

  • NAME
  • ALICE
+0

它的冒號,分號不... – Codexer

+0

修正它,你張貼:) – djv

+0

Hahahaaha前太好了! – Codexer

0
Dim a As String = """NAME"":""ALICE""" 
    Dim b() As String = a.Split(":") 

這是怎麼計算

enter image description here

+0

這是不能在」:?我這樣的代碼是因爲它可能包含「ALICE」之間的':'字符,如'AL:ICE' – user1848681

+0

請向我顯示代碼(相關行),以便我可以幫助您 –

+1

此答案不在vb.net – djv