2014-05-15 199 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语句

    希望它有帮助

    相关问题