Método: String # gsub

Devuelve una copia de str con todas las ocurrencias de patrón sustituidas por el segundo argumento. El patrón es típicamente una expresión regular; si se da como una cadena, cualquier metacaracteres de expresión regular que contenga se interpretará literalmente, por ejemplo, \d coincidirá con una barra invertida seguida de ‘d’, en lugar de un dígito.

Si replacement es una cadena, se sustituirá por el texto coincidente. Puede contener referencias a los grupos de captura del patrón de la forma \d, donde d es un número de grupo, o \k<n>, donde n es un nombre de grupo. Del mismo modo, \&, \', \`, y + corresponden a variables especiales, $&, $', $`, y $+, respectivamente. (Véase regexp.rdoc para más detalles.) es lo mismo que \&. \ se interpreta como un escape, es decir, una sola barra invertida. Tenga en cuenta que, dentro de replacement, las variables de coincidencia especiales, como $&, no se referirán a la coincidencia actual.

Si el segundo argumento es un Hash, y el texto coincidente es una de sus claves, el valor correspondiente es la cadena de reemplazo.

En el formulario de bloque, la cadena de coincidencia actual se pasa como parámetro y variables como , , $`, $&, y $' se configurará apropiadamente. (Véase regexp.rdoc para más detalles.) El valor devuelto por el bloque será sustituido por el partido en cada llamada.

Cuando no se proporciona un bloque ni un segundo argumento, se devuelve un Enumerador.

"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*"

Tenga en cuenta que un literal de cadena consume barras invertidas. (Véase sintaxis / literales.rdoc para detalles sobre literales de cadena.) Las referencias anteriores suelen ir precedidas de una barra invertida adicional. Por ejemplo, si desea escribir una referencia inversa \& en replacement con un literal de cadena entre comillas dobles, debe escribir: "..\&..". Si desea escribir una cadena que no sea de referencia inversa \& en replacement, primero debe escapar la barra invertida para evitar que este método la interprete como una referencia inversa, y luego debe escapar de nuevo las barras invertidas para evitar que un literal de cadena las consuma: "..\\&..". Es posible que desee usar el formulario de bloques para evitar muchas barras invertidas.

Deja una respuesta

Tu dirección de correo electrónico no será publicada.