有没有人在ruby中有正则表达式,可以匹配并替换2个空格的标签?
答案 0 :(得分:10)
不能简单:
str.gsub(/\t/, ' ')
答案 1 :(得分:7)
如果要扩展标签(这与替换标签的任务略有不同),则:
# This algorithm by Brian Candler (B.Candler@pobox.com) found on the
# org.ruby-lang.ruby-talk mailing list
# http://markmail.org/message/avdjw34ahxi447qk
# Date: 2003-5-31 13:35:09
# Subject: Re: expandtabs
def expand_tabs(s, tab_stops = 8)
s.gsub(/([^\t\n]*)\t/) do
$1 + " " * (tab_stops - ($1.size % tab_stops))
end
end
p expand_tabs("\tfoo", 2) # => " foo"
p expand_tabs(" \tfoo", 2) # => " foo"
p expand_tabs("\t\tfoo", 2) # => " foo"
扩展选项卡的原因与仅替换它们的原因不同,选项卡可以表示不同数量的字符,具体取决于它出现在哪一列。例如,如果制表位是每8列,则第一个选项卡中的选项卡列应该被8个空格替换,但是第二列中的一个被7个空格替换,第三列中有一个被6个空格替换,依此类推。