我有一个很长的文本,我想用空格替换其中的点,但只能在文本的中间。 例如:
Domain:...................google.com
我需要这样:
Domain: google.com
我发现了这个用单个空格替换点的正则表达式:
str.gsub!(/(?<=:)\.+(?=[^\.])/, ' ')
但这还不够,因为它会产生:
Domain: google.com
我需要保留与点一样多的空格。 你会如何解决?
最佳答案
你快到了,你的正则表达式没问题,只需使用 String#gsub
的 block 版本计算替换匹配的长度:
▶ str = 'Domain:...................google.com'
#⇒ "Domain:...................google.com"
▶ str.gsub(/(?<=:)\.+(?=[^\.])/) { |m| ' ' * m.length }
#⇒ "Domain: google.com"
关于Ruby 正则表达式 - 用文本中间的空格替换点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39973522/