Ruby正则表达式用于每四个字符拆分不起作用

26

我想要将一个较长的字符串每四个字符进行分割。我是这样尝试实现的:

big_string.split(/..../)

返回的是一个空数组。就我所知,这应该有效。当我将其插入 在线 Ruby 正则表达式测试 时,它甚至可以工作。


为什么要使用正则表达式来拆分整数?直接反复除以10000并将结果存储在数组中不就可以了吗? - Kai
3个回答

89

尝试使用 scan 替代:

$ irb
>> "abcd1234beefcake".scan(/..../)
=> ["abcd", "1234", "beef", "cake"]
或者
>> "abcd1234beefcake".scan(/.{4}/)
=> ["abcd", "1234", "beef", "cake"]

如果字符数量不能被4整除,您还可以获取剩余的字符:

>> "abcd1234beefcakexyz".scan(/.{1,4}/)
=> ["abcd", "1234", "beef", "cake", "xyz"]

({1,4}会贪婪地匹配1到4个字符)


1

嗯,我不知道Rubular在那里做什么以及为什么 - 但是

big_string.split(/..../)

翻译成:

将字符串在每个4个字符序列处分割

这应该正确地得到类似这样的结果

["", "", "", "abc"]

你为什么要在第一个 .) 上加转义符?这不是有效的 Ruby 语法。 - Volte

0

糟糕。

str = 'asdfasdfasdf'
c = 0
out = []
inum = 4
(str.length / inum).round.times do |s|
    out.push(str[c, round(s * inum)])
    c += inum
end

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接