www*_*www 11 ruby string insert
我想<wbr>每5个字符插入一个标签.
输入: s = 'HelloWorld-Hello guys'
预期结果: Hello<wbr>World<wbr>-Hell<wbr>o guys
Chu*_*bas 31
s = 'HelloWorld-Hello guys'
s.scan(/.{5}|.+/).join("<wbr>")
Run Code Online (Sandbox Code Playgroud)
说明:
扫描将正则表达式的所有匹配组分组到一个数组中.在.{5}比赛的任何5个字符.如果字符串末尾有字符,则它们将匹配.+.用你的字符串加入数组
有几种方法可以做到这一点.如果您只想插入分隔符字符串,可以使用scan后跟join如下:
s = '12345678901234567'
puts s.scan(/.{1,5}/).join(":")
# 12345:67890:12345:67
Run Code Online (Sandbox Code Playgroud)
.{1,5}匹配"任意"字符的1到5之间,但由于它是贪婪的,如果可以,它将需要5.少花钱的补贴是为了容纳最后一场比赛,剩下的剩余比赛可能不够.
另一种选择是使用gsub,它允许更灵活的替换:
puts s.gsub(/.{1,5}/, '<\0>')
# <12345><67890><12345><67>
Run Code Online (Sandbox Code Playgroud)
\0是对0组匹配的反向引用,即整个匹配.因此,<\0>有效地替换在文字括号中匹配的正则表达式.
如果不计算空格,那么.你想要匹配\s*\S(即非空格,可能前面有空格).
s = '123 4 567 890 1 2 3 456 7 '
puts s.gsub(/(\s*\S){1,5}/, '[\0]')
# [123 4 5][67 890][ 1 2 3 45][6 7]
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
9150 次 |
| 最近记录: |