【问题标题】:Ruby. Gsub single slash combinations \& \' \+ \0红宝石。 Gsub 单斜杠组合 \& \' \+ \0
【发布时间】:2015-11-16 00:56:17
【问题描述】:
   bang=[]
    (33..126).each{|x| bang<<x.chr}
    block=bang.repeated_permutation(2) 

for i in 1..8836
       x=block.next.join
       if not "x".gsub("x",x).size==2
          puts x 
       end 
    end

输出=>

   \&
    \'
    \+
    \0
    \1
    \2
    \3
    \4
    \5
    \6
    \7
    \8
    \9
    \\
    \`

所以。这里有一个。显示导致 gsub 失败的特殊字符的小脚本......我希望找到一个解决方案让 gsub 100% 工作

【问题讨论】:

  • 试着用简单的文字写出问题所在。所以人们知道你的代码是什么。

标签: ruby-2.0


【解决方案1】:

documentedsubgsub 以特殊方式处理替换字符串中的 '\1' 之类的序列:

如果替换是一个字符串,它将被替换为匹配的 文本。它可能包含对模式捕获组的反向引用 形式为“\d”,其中 d 是组号,或“\k”,其中 n 是 组名。

您可以在块样式中使用subgsub。该块需要返回应该被替换的字符串。

"x".sub("x"){|match| '\1'}
=> '\1'    # or outputted as "\\1"

"x".sub("x"){|match| '\1'}.size
=> 2

【讨论】:

    【解决方案2】:

    这是我对这个问题的解决方案......如果有人遇到同样的事情。

        puts "ruby rules !".gsub("!"){"\\&"}=>
       #ruby rules \& 
       #ruby rules \' 
       #ruby rules \+ 
       #ruby rules \0 
       #ruby rules \1 
       #ruby rules \2 
       #ruby rules \3 
       #ruby rules \4 
       #ruby rules \5 
       #ruby rules \6 
       #ruby rules \7 
       #ruby rules \8 
       #ruby rules \9 
       #ruby rules \\ 
       #ruby rules \`
    

    【讨论】:

      猜你喜欢
      • 2013-01-30
      • 1970-01-01
      • 1970-01-01
      • 2013-06-17
      • 2019-05-10
      • 2013-12-01
      • 1970-01-01
      • 2019-08-09
      • 1970-01-01
      相关资源
      最近更新 更多