Method: String#gsub

devolve uma cópia de str com todas as ocorrências de padrão substituídas pelo segundo argumento. O padrão é tipicamente um “Regexp”; se dado como uma cadeia, qualquer metacarácter de expressão regular que ele contém será interpretado literalmente, por exemplo \d irá corresponder a uma barra invertida seguida por ‘d’, em vez de um dígito.

se replacement for uma cadeia, será substituído pelo texto correspondente. Pode conter referências anteriores aos grupos de captura do padrão da forma \d, onde d é um número de grupo, ou \k<n>, onde n é um nome de grupo. Da mesma forma, \&, \', \`, e + correspondem às variáveis especiais, $&, $', $`, e $+, respectivamente. (Ver regexp.rdoc para mais detalhes.) é igual a \&. \ é interpretado como uma fuga, ou seja, uma única barra invertida. Note que, dentro de replacement as variáveis de correspondência especial, como $&, não se referirão à correspondência atual.

se o segundo argumento é um Hash, e o texto correspondido é uma de suas chaves, o valor correspondente é a cadeia de substituição.

na forma de bloco, a sequência de correspondência atual é passada como um parâmetro, e variáveis como:, , $`, $&, e $' será fixado de forma adequada. (Ver regexp.rdoc para mais detalhes.) O valor devolvido pelo bloco será substituído pelo jogo em cada chamada.

quando nem um bloco nem um segundo argumento é fornecido, um enumerador é retornado.

"hello".gsub(//, '*') #=> "h*ll*""hello".gsub(/()/, '<>') #=> "h<e>ll<o>""hello".gsub(/./) {|s| s.ord.to_s + ' '} #=> "104 101 108 108 111 ""hello".gsub(/(?<foo>)/, '{\k<foo>}') #=> "h{e}ll{o}"'hello'.gsub(//, 'e' => 3, 'o' => '*') #=> "h3ll*"

Note que um literal de cordas consome retrocessos. (See syntax/literals.rdoc para detalhes sobre literais de cordas.) Back-references são tipicamente precedidas por uma barra invertida adicional. Por exemplo, se você quiser escrever uma referência back-reference \& em replacement com um texto de citação dupla literal, você precisa escrever: "..\&..". Se quiser escrever uma string não-back-reference \& em replacement, precisa primeiro de escapar à barra invertida para evitar que este método a interprete como uma back-reference, e depois precisa de escapar às barras invertidas de novo para evitar que um string literal as consuma: "..\\&..". Você pode querer usar o formulário de bloco para evitar um monte de backslashes.

Deixe uma resposta

O seu endereço de email não será publicado.