2014-05-15 198 views
-1

我有一個全名作爲輸入,並想單詞拆分整個全名字,但它應該:正則表達式分割字符串不包括連字符

  1. 如果包含連字符如不拆的字

    MRS C REES-MOGG 
    

    結果:

    MRS 
    C 
    REES-MOGG 
    
    如果包含下劃線e.g REES_MOGG

HYPHEN
REES-MOGG

  • 應分拆字

    UNDERSCORE
    實施例:

    MRS C REES_MOGG 
    

    結果:

    MRS 
    C 
    REES 
    MOGG 
    

    我目前使用下面的代碼但不成功:

    Dim str As String() = Regex.Split(names, "\s+") 
    
  • +3

    你在使用什麼語言/ lib?如果你想分割下劃線,爲什麼沒有在你的正則表達式中強調? –

    +0

    簡單地將'_'替換爲''不能完成這項工作? – hsz

    +0

    我正在使用VB.net – user3636465

    回答

    1

    只需拆分"\s+|_",這將拆分爲空白和下劃線。您的代碼是:

    Dim str As String() = **Regex.Split(names, "\s+|_")** 
    

    Demo

    對於它連字符號拆分過,只是添加|\&字符串:

    Dim str As String() = **Regex.Split(names, "\s+|_|\&")** 
    

    Demo

    +0

    酷..它的工作..很多謝謝 – user3636465

    +0

    此外,如果我想和符號'&'同時分裂? – user3636465

    +0

    @ user3636465我已將額外的信息添加到答案中,並在&符號之間進行拆分。如果此答案解決了您的問題,請通過答案左側的複選標記將其標記爲已接受。 – Joeytje50

    1

    使用本:

    Dim str As String() = Regex.Split(names, "[\s_]+") 
    
    +3

    請記住'(\ s | _)'只是'[\ S_]' – Robin

    0

    爲了使白色空間腳本拆分,並強調你只需要在你的正則表達式中添加字符組[ ]周圍的空白字符\s,然後添加任何其他符號,你想吐在該組。

    Dim str As String() = Regex.Split(names, "[\s_]+") 
    
    1
    Dim str As String() = names.Split({" ", "_", "&", vbTab}, StringSplitOptions.RemoveEmptyEntries) 
    
    0

    我不知道很多關於VB .NET,但你應該改變你的正則表達式是肯定的。

    這裏是一個例子,雖然我測試了Javascript。

    Dim matchForHyphen As MatchCollection = Regex.Matches("MRS C REES-MOGG","[\w]*[^_]*") 
    Dim matchForUnderscore As MatchCollection = Regex.Match("MRS C REES_MOGG","[\w]*[^_]*") 
    

    然後,您應該遍歷Match對象以獲取結果。 例如。 matchForHyphen [i]在For循環中。或For Each語句

    希望它有幫助

    相關問題