805 votes

Méthode la plus rapide pour remplacer toutes les occurrences d’un caractère dans une chaîne

Quel est le moyen le plus rapide pour remplacer toutes les instances d’une dans une chaîne en ? A , un , un `` ?

1307voto

Gumbo Points 279147

Le plus simple serait d’utiliser une expression régulière avec indicateur g pour remplacer toutes les instances :

Cela remplacera toutes les occurrences. Si vous avez juste une chaîne, vous pouvez le convertir à un objet RegExp comme ceci :

162voto

qwerty Points 437

Essayez cette replaceAll : http://dumpsite.com/forum/index.php?topic=4.msg8#msg8

C’est très rapide, et il va fonctionner pour toutes ces conditions que beaucoup d’autres échoue sur :

Je voudrais savoir si vous pouvez casser, ou vous avez quelque chose de mieux, mais assurez-vous qu’il peut passer ces 4 épreuves.

106voto

Sani Huttunen Points 10433
<pre><code></code><p>nouvelleChaine est maintenant « Thas comme une strang »</p></pre>

6voto

Crozin Points 22346

Ce qui est le plus rapide, je ne sais pas, mais je sais ce qui est le plus lisible - que ce qui est plus court et plus simple. Même si c’est un peu plus lent que d’autre solution, il convient d’utiliser.

Donc utiliser :

Et profiter de bon code au lieu de la plus rapide (bien... 1/100000 sec n’est pas une différence) et laid. ;)

4voto

Frank W. Zammetti Points 125

J'ai essayé un certain nombre de ces suggestions après avoir constaté qu'une mise en œuvre que j'avais écrit de ce probablement près de 10 ans, en fait, ne fonctionnent pas complètement (le méchant de la production de bug dans un long oubliés du système, n'est-ce pas toujours ainsi?!)... ce que j'ai remarqué, c'est que ceux que j'ai essayé (je n'ai pas toutes les essayer) avait le même problème que le mien, qui est, qu'ils ne serait pas remplacer CHAQUE occurrence, seule la première, au moins pour mon cas de test de la "test....txt" vers le bas "test.txt" en remplaçant"..""." ... peut-être que j'ai manqué, donc la regex de la situation? Mais je m'égare...

Donc, j'ai réécrit mon de mise en œuvre comme suit. C'est plutôt carrément simple, bien que je soupçonne pas le plus rapide mais je ne pense pas que la différence sera question avec moderne JS moteurs, sauf si vous faites cela à l'intérieur d'une boucle serrée, bien sûr, mais c'est toujours le cas pour n'importe quoi...

function replaceSubstring(inSource, inToReplace, inReplaceWith) {

  var outString = inSource;
  while (true) {
    var idx = outString.indexOf(inToReplace);
    if (idx == -1) {
      break;
    }
    outString = outString.substring(0, idx) + inReplaceWith +
      outString.substring(idx + inToReplace.length);
  }
  return outString;

}

Espère que ça aide quelqu'un!

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X