2015-11-16 58 views
-1
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 

OUTPUT =>紅寶石。 GSUB單斜線組合&」 + 0

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

大二這裏有一個。小腳本,顯示的特殊字符導致GSUB失敗......我希望能找到一個解決方案,使GSUB工作100%

+0

嘗試寫簡單的話是什麼問題。所以人們知道你的代碼是關於什麼的。 – Meier

回答

0

這是documentedsubgsub替換字符串處理諸如「\ 1」序列一種特殊的方式:

如果替換是一個字符串,它會替換匹配的 文本。它可能包含形式爲「\ d」的模式捕獲組 的反向引用,其中d是組號或「\ k」,其中n是組名稱 。

您可以使用subgsub塊樣式。該塊需要返回應該是替代的字符串。

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

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

這裏是我對這個問題的解決方案...如果有人遇到同樣的事情。

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 \`