gennaio 21, 2013

JSLint: String.replace senza problemi

Ultimamente mi sono trovato nella situazione di dover effettuare il replace di alcuni caratteri in una String.
Il codice più o meno era questo:


    User.prototype.escapedLogin = function () {
        'use strict';

        return this.login.replace(/\\/, '\$');
    };


Il test funzionava perfettamente:


    it("is able to escape login", function() {
        var user = new User("XXX\\r.simoni");
        expect(user.escapedLogin()).toBe("XXX$r.simoni");
    });


ma JSLint mi segnalava:

    Unexpected '\$'


La documentazione di JSLint aiuta tantissimo in questi casi, infatti con la frase:


"Regular expressions are written in a terse and cryptic notation. JSLint looks for problems that may cause portability problems. It also attempts to resolve visual ambiguities by recommending explicit escapement.
JavaScript's syntax for regular expression literals overloads the / character. To avoid ambiguity, JSLint expects that the character preceding a regular expression literal is a ( or = or : or , character."



ho anche capito, perchè c'è la fame nel mondo e le stagioni di oggi non sono più quelle di una volta.
Alla fine, dopo estenuanti ricerche sulla rete (... ed infiniti minuti passati davanti alla macchinetta del caffè), ho scoperto che bastava usare:

    ...
    return this.login.replace(/\\/, "$");


Quindi non si deve far l'escape del simbolo $.
Ho provato però ad usare '$', ma continuava a dare errore?!?

... ma che bello JSLint!!!




Nessun commento:

Posta un commento