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.
JavaScript's syntax for regular expression literals overloads the
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!!!
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!!!
Comments
Post a Comment