Quel est le moyen le plus rapide pour remplacer toutes les instances d’une dans une chaîne en
? A , un
, un `` ?
Réponses
Trop de publicités?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.
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. ;)
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!