我有一个很长的文本,我想用空格替换点,但只在文本的中间.
例如:
例如:
Domain:...................google.com
我需要这个:
Domain: google.com
我发现这个正则表达式用一个空格替换点:
str.gsub!(/(?<=:)\.+(?=[^\.])/,' ')
但这还不够,因为它产生:
Domain: google.com
我需要保留像点一样多的空间.
你会如何解决它?
解决方法
你几乎就在那里,你的正则表达式很好,只需使用
String#gsub
的块版本来计算替换的匹配长度:
▶ str = 'Domain:...................google.com' #⇒ "Domain:...................google.com" ▶ str.gsub(/(?<=:)\.+(?=[^\.])/) { |m| ' ' * m.length } #⇒ "Domain: google.com"