2009 19/08
String.replace no Javascript
Muita gente conhece o método String.replace do Javascript. De forma geral, ele é o método que permite substituir (jura? =) uma (sub)string por outra string.
É um método bastante usado em códigos Javascript, principalmente por possibilitar o uso de expressões regulares na hora de fazer as substituições. A forma mais comum de uso é algo do tipo:
"Javascript".replace( /[aeiou]/g, "" )
O trecho de código acima remove as vogais da string "Javascript" resultando na string "Jvscrpt", bem simples.
Mas o que nem todo mundo sabe (e eu costumo não lembrar também) é que o segundo parâmetro do método replace pode ser uma função qualquer, que será executada recebendo como parâmetro a parte da string que "casou" com a expressão dada.
Desta forma você pode manipular como bem quiser a parte que "casou" da expressão regular. Isso é útil, por exemplo, se você quer procurar URLs numa determinada string e reduzir aquelas com mais de N caracteres.
Fiz um código que mostra o exemplo acima funcionando. Veja o exemplo aqui.
Nota 1: A expressão regular para "casar" URLs está bem simples e contida para o exemplo... não "casaria" todos os formatos possíveis de URL.
Nota 2: O método substr no IE não funciona como esperado quando se tem parâmetros negativos. Que azar...