Skip to content

Instantly share code, notes, and snippets.

@rponte
Created November 19, 2011 00:30
Show Gist options
  • Save rponte/1378195 to your computer and use it in GitHub Desktop.
Save rponte/1378195 to your computer and use it in GitHub Desktop.
normalize.js
// Created by Nando Vieira
String.prototype.normalize = function() {
var from = "àáâãäåæçèéêëìíîïðñòóôõöøùúûüýþßàáâãäåæçèéêëìíîïðñòóôõöøùúûýýþÿŕŕ";
var to = "aaaaaaaceeeeiiiidnoooooouuuuybsaaaaaaaceeeeiiiidnoooooouuuyybyrr";
var value = this;
for(var i = 0; i < from.length; i++) {
char_re = new RegExp(from.charAt(i), "gim");
value = value.replace(char_re, to.charAt(i))
};
return value;
};
"ïñtèŕñåtïøñãlízátïöñ".normalize();
@rponte
Copy link
Author

rponte commented Nov 19, 2011

@jalex79
Copy link

jalex79 commented Nov 19, 2011

Por esse método, não dá um new no RegExp a cada loop :p

String.prototype.normalize = function() {
    var translate = { "à":"a", "á":"a", "â":"a", "ã":"a", "ä":"a", "å":"a", "æ":"a", "ç":"c", "è":"e", "é":"e",
        "ê":"e", "ë":"e", "ì":"i", "í":"i", "î":"i", "ï":"i", "ð":"d", "ñ":"n", "ò" :"o", "ó":"o", "ô":"o", "õ":"o", "ö":"o",
        "ø":"o", "ù":"u", "ú":"u", "û":"u", "ü":"u", "ý":"y", "þ":"b", "ß" :"s", "à":"a", "á":"a", "â":"a", "ã":"a", "ä":"a",
        "å":"a", "æ":"a", "ç":"c", "è":"e", "é":"e", "ê":"e", "ë" :"e", "ì":"i", "í":"i", "î":"i", "ï":"i", "ð":"d", "ñ":"n",
        "ò":"o", "ó":"o", "ô":"o", "õ":"o", "ö":"o", "ø" :"o", "ù":"u", "ú":"u", "û":"u", "ý":"y", "ý":"y", "þ":"b", "ÿ":"y",
        "ŕ":"r", "ŕ":"r"
    },
    translate_re = /[àáâãäåæçèéêëìíîïðñòóôõöøùúûüýþßàáâãäåæçèéêëìíîïðñòóôõöøùúûýýþÿŕŕ]/gim;
    return ( this.replace( translate_re, function( match ){
        return translate[ match ];
    }) );
};

console.log( "ïñtèŕñåtïøñãlízátïöñ".normalize() );

@rponte
Copy link
Author

rponte commented Nov 19, 2011

Show de bola, Jefferson. Acredito que a sua função seja mais performática por não usar expressão regular.

@jalex79
Copy link

jalex79 commented Nov 19, 2011

Eu recebi a atualização do teu gist e quando vi o new dentro do loop, não me conformei.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment