我有一个很长的文本,我想用空格替换点,但只在文本的中间.例如:
Domain:...................google.com
Run Code Online (Sandbox Code Playgroud)
我需要这个:
Domain: google.com
Run Code Online (Sandbox Code Playgroud)
我发现这个正则表达式用一个空格替换点:
str.gsub!(/(?<=:)\.+(?=[^\.])/, ' ')
Run Code Online (Sandbox Code Playgroud)
但这还不够,因为它产生:
Domain: google.com
Run Code Online (Sandbox Code Playgroud)
我需要保留像点一样多的空间.你会如何解决它?
你已经快到了,你的正则表达式很好,只需使用块版本String#gsub
来计算替换匹配的长度:
\xe2\x96\xb6 str = \'Domain:...................google.com\'\n#\xe2\x87\x92 "Domain:...................google.com"\n\xe2\x96\xb6 str.gsub(/(?<=:)\\.+(?=[^\\.])/) { |m| \' \' * m.length }\n#\xe2\x87\x92 "Domain: google.com"\n
Run Code Online (Sandbox Code Playgroud)\n