gpt4 book ai didi

ruby - 在 Ruby 中使用拆分函数时的答案差异

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

给定以下输入:

line1 = "Hey | Hello | Good | Morning"
line2 = "Hey , Hello , Good , Morning"
file1=length1=name1=title1=nil

使用','分割字符串如下:

file1, length1, name1, title1 = line2.split(/,\s*/)

我得到以下输出:

puts file1,length1,name1,title1

>Hey
>Hello
>Good
>Morning

但是,使用“|”拆分字符串我收到不同的输出:

file1, length1, name1, title1 = line2.split(/|\s*/)
puts file1,length1,name1,title1

>H
>e
>y

除了分隔符号(第一种情况下为逗号,第二种情况下为竖线)外,两个字符串都相同。我使用的 split 函数的格式也一样,当然,除了定界字符。是什么导致了这种变化?

最佳答案

问题是因为|在regex中有OR的意思。如果你想要文字字符,那么你需要将它转义\|。所以正确的正则表达式应该是 /\|\s*/


目前,正则表达式 /|\s*/ 表示空字符串或一系列空白字符。由于在 OR 中首先指定了空字符串,正则表达式引擎将在每个字符处分解字符串(您可以想象字符之间有一个空字符串)。如果将它交换为 /\s*|/,那么在可能的情况下,空格将优先于空字符串,并且拆分后的标记列表中将没有空格。

关于ruby - 在 Ruby 中使用拆分函数时的答案差异,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12233158/

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