jQuery reemplazar el carácter con otro

Digamos que tengo:

<h1>Win $50<h1>

Necesito cambiar el signo $ a € con jQuery

Así que puedo hacer como que:

$('h1').text( $('h1').text().replace('$', '€') );

Pero lo que si tengo algo así como que:

<h1>Win $50 and Get $100</h1>

Sólo cambia la primera, ¿Cómo puedo cambiar todo?

InformationsquelleAutor user4571629 | 2015-04-02

3 Kommentare

  1. 8

    Uso regexp con indicador g

    $('h1').text( $('h1').text().replace(/\$/g, '€') );
    • Gracias a usted, Que está Trabajando
    • Me contestó la misma cosa 2 minutos antes.
  2. 4

    Con una expresión regular.

    JS:

    txt = $('h1').text().replace(/\$/g, '€')
    $('h1').text(txt);

    HTML:

    <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
    <h1>Win $50 and get $100</h1>

    g significa «global» (todos los casos)

    Como RafH dijo, $ es un personaje especial en regex, por lo que necesita ser escapado con \.

    • $ necesita ser escapado
  3. 1

    Aquí una función auxiliar que una parte de mi biblioteca de utilidad que puedo agregar en cada pieza de código que escribo. Siéntase libre de utilizar cualquier forma que le guste.

    String.prototype.replaceAll = function (stringFind, stringReplace) {
        var ex = new RegExp(stringFind.replace(/([.*+?^=!:${}()|\[\]\/\\])/g, "\\$1"), "g");
        return this.replace(ex, stringReplace);
    };

    Se añade un replaceAll función a todas las cadenas para que usted no tiene que hacer constantemente el uso de Expresiones regulares en todo el código.

    Se puede utilizar como este

    str.replaceAll("$", "€");

    He aquí un ejemplo:

    JS:

    String.prototype.replaceAll = function (stringFind, stringReplace) {
      var ex = new RegExp(stringFind.replace(/([.*+?^=!:${}()|\[\]\/\\])/g, "\\$1"), "g");
      return this.replace(ex, stringReplace);
    };
    
    var str = "Win $50 and Get $100";
    
    document.body.innerHTML = str.replaceAll("$", "€");


    EDITAR casos de Prueba por cada comentario a continuación:

    JS:

    String.prototype.replaceAll = function (stringFind, stringReplace) {
      var ex = new RegExp(stringFind.replace(/([.*+?^=!:${}()|\[\]\/\\])/g, "\\$1"), "g");
      return this.replace(ex, stringReplace);
    };
    
    var str = "test test abc test abc $%& test $%& $%&. test. abc $%& . .";
    document.body.innerHTML = str  + "<br />";
    document.body.innerHTML += str.replaceAll(".", "") + "<br />";
    document.body.innerHTML += str.replaceAll("%&", "") + "<br />";
    document.body.innerHTML += str.replaceAll("test", "") + "<br />";
    document.body.innerHTML += str.replaceAll("a-z", "") + "<br />";


    Actualización

    Por los comentarios de Danilo a continuación (¡Gracias!), la función original no iba a permitir que ciertos caracteres especiales, y si se portan mal un intervalo de texto se inscribió en el replaceAll() función. En mi propio código, no me había llegado a través de estos casos como de todavía.

    Por esta respuesta, he actualizado mi función, por lo que ahora se escapa de las RegEx para ser más eficiente en la prueba de los escenarios.

    • usted está utilizando corchetes dentro de su regexp: si stringFind tiene más de un charactore o si stringFind = «.» usted va a obtener resultados inesperados.
    • Por favor, ver mi edición con casos de prueba y explicar su punto con mayor detalle. Esta función funciona bien con «.» o varios caracteres, como se muestra en el fragmento de arriba.
    • usted está hecho a la derecha: el punto se maneja correctamente, sin embargo, las palabras no, no, trate de añadir esto a tu ejemplo: documento.cuerpo.innerHTML += str.replaceAll(«prueba», «prueba») + «<br />»; el documento.cuerpo.innerHTML += str.replaceAll(«a-z», «someText») + «<br />»;
    • Gracias @Danilo – le agradezco que lo haya señalado. He actualizado mi respuesta.

Kommentieren Sie den Artikel

Bitte geben Sie Ihren Kommentar ein!
Bitte geben Sie hier Ihren Namen ein

Recent Articles

Python «set» con duplicados/elementos repetidos

Hay una forma estándar de representar un "conjunto" que puede contener elementos duplicados. Como yo lo entiendo, un conjunto tiene exactamente un cero o...

Python: generador de expresión vs rendimiento

En Python, ¿hay alguna diferencia entre la creación de un generador de objetos a través de un generador de expresión versus el uso de...

Cómo exportar/importar la Masilla lista de sesiones?

Hay una manera de hacer esto? O tengo que tomar manualmente cada archivo de Registro? InformationsquelleAutor s.webbandit | 2012-10-23

no distingue mayúsculas de minúsculas coincidentes en xpath?

Por ejemplo, para el xml a continuación <CATALOG> <CD title="Empire Burlesque"/> <CD title="empire burlesque"/> <CD...