2008-10-31 7 views
13

Ceci est simple. Je veux remplacer une sous-chaîne par une autre sous-chaîne côté client en utilisant Javascript.Javascript - comment remplacer une sous-chaîne?

Chaîne d'origine est 'original READ ONLY'

Je veux remplacer le 'READ ONLY' avec 'READ WRITE'

Toute réponse rapide s'il vous plaît? Peut-être avec un extrait de code javascript ...

+8

Je ne suis pas sûr que vous soyez très honnête. La question pourrait être une «évidence», mais ce sont les petites choses qui importent lorsque l'on met en œuvre certaines fonctionnalités. Esp choses à faire avec la manipulation de la chaîne. Je pense que Stackoverflow est le mieux adapté pour un tel. Alors, s'il vous plaît, ne portez pas préjudice. –

+0

Vous demandiez comment remplacer un * mot défini * dans une chaîne * définie *. Je ne vois pas de subtilités liées à la mise en œuvre, c'est juste simple et simple. Sans vouloir offenser, il n'y a rien de mal à * poser * ce genre de questions. C'est quelque chose qui ne va pas avec * up-vote * eux. – Tomalak

+2

Votre plainte est sans fondement. Le texte 'alt' sur l'image de la flèche vers le haut dit" Cette question est utile et claire ... "qui est une question subjective. Maintenant, s'il est dit «Cette question est utile et claire à l'ambassadeur Tomalak ...», votre plainte pourrait être fondée. –

Répondre

25

String.replace() est à base de l'expression rationnelle; Si vous passez une chaîne comme premier argument, l'expression rationnelle qui en est faite n'inclura pas l'indicateur 'g' (global). Cette option est essentielle si vous voulez remplacer toutes les occurrences de la chaîne de recherche (ce qui est généralement ce que vous voulez).

Un langage alternatif non-regexp pour une chaîne globale est simple, remplacer:

function string_replace(haystack, find, sub) { 
    return haystack.split(find).join(sub); 
} 

Ceci est préférable lorsque la chaîne « trouver » peut contenir des caractères qui ont une signification particulière indésirable dans les expressions rationnelles.

De toute façon, l'une ou l'autre méthode est correcte pour l'exemple de la question.

+0

Ceci est vraiment utile, TY! –

12

Bonne summary. Il est basé sur regexp, si vous utilisez la notation regexp, vous pouvez spécifier les modificateurs i et g (insensible à la casse (i), qui correspond à case et global (g), qui remplacera toutes les occurrences), si vous utilisez la notation de chaîne Je vais me convertir en regex et vous ne pourrez pas spécifier de modificateur.

<script type="text/javascript"> 

var str1="Visit Microsoft!"; 
var str2 = str1.replace(/microsoft/i, "W3Schools"); //Will work, per the i modifier 

var str3 = "original READ ONLY"; 
var str4 = str3.replace("ONLY", "WRITE"); //Will also work 

</script> 
+8

str2 = str2.replace (/^Visiter /, 'Ne pas visiter'); – Gareth

+0

Fonctionne pour moi. Merci beaucoup! –

+0

La réponse de Bobince est la plus correcte; cette réponse implique que passer une chaîne n'est pas la même chose que la regex, mais comme l'indique Bobince, de toute façon, elle est utilisée comme regex. –

3
stringObject.replace(findstring,newstring) 
+0

très simple, n'est-ce pas !!! –

2

Je préfère l'approche regex,

newstring = oldstring.replace (/ regexforstringtoreplace /, 'nouvelle chaîne');

Il est également intéressant d'examiner les modificateurs de regex g et i, ceux-ci effectuent un remplacement global (c'est-à-dire remplacent toutes les occurrences) et le rendent insensible à la casse.

par exemple:

<script type="text/javascript"> 

var str = "this is a String"; 

document.write(str.replace(/\s/g, "_")); 

would print: this_is_a_string 

document.write(str.replace(/s/gi, "f")); 

would print "thif if a ftring" 

</script> 
Questions connexes