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

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : Existe-t-il un équivalent JavaScript à strtr()

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

par The_Crabe » 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...

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

par patrick72 » 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;
}

par Invité » 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; }

par bbcluny » 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

par PhilFree » 08 sept. 2005, 23:16

Merci ouckileou !

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

par ouckileou » 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)

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

par PhilFree » 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...