ruby - 字符串:用数字替换空格

标签 ruby regex string split gsub

我想用 fixnum(即 空格 的数量)替换字符串中的每个 空格

举个例子:

s = "hello,   how          are  you ?"
omg(s) # => "hello,3how10are2you1?"

你有没有找到一种方法(如果可能的话很性感)来更新这样的字符串?

谢谢 Rubists :)

最佳答案

gsub 可以为“替换为”参数提供一个 block ,该 block 的结果被插入到找到匹配项的位置。 block 的参数是匹配的字符串。因此,为了实现这一点,我们捕获尽可能多的空白(/\s+/),并在每次找到一个部分时将其输入 block ,返回该字符串的长度,它被放回空白处最初被发现。

代码:

s = "hello,   how          are  you ?"
res = s.gsub(/\s+/) { |m| m.length }
puts res
# => hello,3how10are2you1?

关于ruby - 字符串:用数字替换空格,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6319064/

相关文章:

regex - 如何检查字符串是否包含 shell 中正则表达式模式中的字符?

Python Pandas 数据帧 : unorderable types: str() > int()

ruby-on-rails - Active Record 查询 - 如果提供 nil 值则查找的默认值

python - 两个字符串之间最长匹配序列的正则表达式

arrays - 如何在 Ruby 中将两个数组相乘?

java - 使用正则表达式从字符串中提取带有调用文本的电话号码

c# - 正则表达式:解析街道名称/号码

c++ - 至少出现两次的最长子串 : C++ question

ruby - 有没有更快的方法在 ruby​​ 中生成随机字符串?

ruby-on-rails - Mongoid:在 Rails 控制台中显示带有 embeded_in 对象的整个 mongodb 对象