Existe-t-il un équivalent JavaScript à strtr()

Eléphant du PHP | 172 Messages

08 sept. 2005, 00:23

Bonjour à tous,

Existe-t-il un équivalent Javascript à la fonction PHP strtr() ?

Si ce n'est pas le cas, l'un d'entre vous a-t-il créé une telle fonction JavaScript ?

J'ai essayé ça:

Code : Tout sélectionner

function strtr( expr , a , b ) { var i = 0 ; while ( i != -1) { i = expr.indexOf( a , i ) ; if ( i >=0 ) { expr = expr.substring( 0 , i ) + b + expr.substring( i + a.length ); i += b.length ; } } return expr ; }
Mais ça ne fonctonne pas...

Modérateur PHPfrance
Modérateur PHPfrance | 6373 Messages

08 sept. 2005, 00:40

il y a la fonction replace() : http://www.asp-php.net/tutorial/scripting/strings.php
(la dernière du tableau)

Eléphant du PHP | 172 Messages

08 sept. 2005, 23:16

Merci ouckileou !

ça fonctionne, une petit coup de replace() et une petite expression régulière.

bbcluny
Invité n'ayant pas de compte PHPfrance

07 nov. 2005, 13:10

bonjour,
j'ai essayé de faire la fonction strtr() en javascript, mais sans succes pouvez-vous m'aider ?

Merci d'avance

Invité
Invité n'ayant pas de compte PHPfrance

28 nov. 2005, 23:19

Code : Tout sélectionner

function tr(string,from,to) { var length = 0; var hash = new Array(); var tmp = ""; if (from.length < to.length) length = from.length; else length = to.length; for (var i=0; i<length; i++) { hash[from.charAt(i)] = to.charAt(i); } for (var j=0; j<string.length; j++) { var c = string.charAt(j); if (hash[c]) tmp = tmp + hash[string.charAt(j)]; else tmp = tmp + c; } return tmp; }

patrick72
Invité n'ayant pas de compte PHPfrance

12 août 2013, 14:16

la même fonction... sous la forme d'une surcharge du prototype String !

Exemple : var toto = "il n'y a plus de caractères accentués";
var titi = toto.strtr('àáâãäçèéêëìíîïñòóôõöùúûüýÿÀÁÂÃÄÇÈÉÊËÌÍÎÏÑÒÓÔÕÖÙÚÛÜÝ','aaaaaceeeeiiiinooooouuuuyyAAAAACEEEEIIIINOOOOOUUUUY');
alert(titi);

String.prototype.strtr = function(from,to)
{
// Initialisation
var length = 0;
var hash = new Array();
var tmp = "";

// Taille de la chaine la plus longue ?
if (from.length < to.length)
length = from.length;
else
length = to.length;

// Création de la table d'équivalence...
for (var i=0; i<length; i++) {
hash[from.charAt(i)] = to.charAt(i);
}

// Conversion...
for (var j=0; j<this.length; j++) {
var c = this.charAt(j);
if (hash[c])
tmp = tmp + hash[this.charAt(j)];
else
tmp = tmp + c;
}

// retourne le résultat
return tmp;
}

The_Crabe
Invité n'ayant pas de compte PHPfrance

09 mai 2015, 00:38

Voici ma petite fonction qui fonctionne. :lol:
Attention seul le caractère "\" n'est pas traité !

function strtr(chaine)
{
var recherche = "!#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[]^_`abcdefghijklmnopqrstuvwxyz{|}~€‚ƒ„…†‡ˆ‰Š‹ŒŽ‘’“”•–—˜™š›œžŸ ¡¢£¤¥¦§¨©ª«¬­®¯°±²³´µ¶·¸¹º»¼½¾¿ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖרÙÚÛÜÝÞßàáâãäåæçèéêëìíîïðñòóôõö÷øùúûüýþÿ";
var remplace = "1111111111111111111111111111111ABCDEFGHIJKLMNOPQRSTUVWXYZ11111ABCDEFGHIJKLMNOPQRSTUVWXYZ111111111111111S1O1Z11111111111S1O1ZY11111111111111111111111111111111AAAAAAACEEEEIIIIDNOOOOO1OUUUUY1SAAAAAAACEEEEIIII1NOOOOO1OUUUUY1Y";
var length = chaine.length;
var tmp = "";

for (var i=0; i<length; i++)
{
tmp += remplace.charAt(recherche.lastIndexOf(chaine.charAt(i)));
}
return tmp;
}

Pourquoi faire simple quand on peut faire compliquer =D>
J'espère que cela pourra en aider quelques un...