["on", "behalf", "of", "all", "of", "us"] 但-6ren">
gpt4 book ai didi

ruby - 使用非单词字符正则表达式拆分字符串时的奇怪行为

转载 作者:数据小太阳 更新时间:2023-10-29 07:53:29 25 4
gpt4 key购买 nike

案例 1(尾随空格)

> "on behalf of all of us  ".split(/\W+/)
=> ["on", "behalf", "of", "all", "of", "us"]

但是如果有前导空格,那么它给出以下内容

案例2(前导空格)

> "  on behalf of all of us".split(/\W+/)
=> ["", "on", "behalf", "of", "all", "of", "us"]

对于案例 2,我也期待案例 1 的结果。

已添加

> "@dhh congratulations!!".split(/\W+/)
=> ["", "dhh", "congratulations"]

谁能帮我理解这种行为?

最佳答案

[更新]

跳过正则表达式,只按空格拆分!

> "@dhh congratulations!!".split
=> ["@dhh", "congratulations"]

\W 匹配任何 非单词字符,包括空格。因此解析器在开始时看到一个空格,在空格后看到一些字符;它 split 了。但是如果它在末尾有空格,则没有其他冗长的 char[a-zA-Z0-9] 可以用来拆分。

要获得一致的行为,您应该使用 #strip 方法删除空格。

案例 1(尾随空格)

1.9.3p327 :007 > " on behalf of all of us ".strip.split(/\W+/) 
=> ["on", "behalf", "of", "all", "of", "us"]

案例2(前导空格)

1.9.3p327 :008 > "on behalf of all of us ".strip.split(/\W+/) 
=> ["on", "behalf", "of", "all", "of", "us"]

关于ruby - 使用非单词字符正则表达式拆分字符串时的奇怪行为,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14110023/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com