En supposant que j'ai une chaîne string
comme ceci:
"abcd=0; efgh=1"
et je veux remplacer "abcd" par "dddd". J'ai essayé de faire une chose pareille:
string.replaceAll("abcd","dddd");
Ça ne marche pas. Aucune suggestion?
EDIT: Pour être plus précis, je travaille dans Java et j'essaie d'analyser le document HTML, concrètement le contenu entre les balises <script>
. J'ai déjà trouvé un moyen d'analyser ce contenu dans une chaîne:
if(tag instanceof ScriptTag){
if(((ScriptTag) tag).getStringText().contains("DataVideo")){
String tagText = ((ScriptTag)tag).getStringText();
}
}
Maintenant, je dois trouver un moyen de remplacer une sous-chaîne par une autre.
Vous devez utiliser la valeur de retour de la méthode replaceAll()
. replaceAll()
ne remplace pas les caractères de la chaîne en cours, il retourne une nouvelle chaîne avec remplacement.
- Les objets chaîne étant immuables, leurs valeurs ne peuvent plus être modifiées après leur création.
- Vous pouvez utiliser replace () au lieu de replaceAll () si vous n'avez pas besoin de regex.
String str = "abcd=0; efgh=1";
String replacedStr = str.replaceAll("abcd", "dddd");
System.out.println(str);
System.out.println(replacedStr);
les sorties
abcd=0; efgh=1
dddd=0; efgh=1
2 choses à noter:
String#replace(String)
qui fera l'affaire.Alors utilisez simplement ce code:
String replaced = string.replace("abcd", "dddd");
Vous devez créer la variable à laquelle attribuer la nouvelle valeur, comme ceci:
String str = string.replaceAll("abcd","dddd");
Par regex, je pense que c'est Java, la méthode replaceAll()
renvoie une nouvelle chaîne avec les sous-chaînes remplacées, alors essayez ceci:
String teste = "abcd=0; efgh=1";
String teste2 = teste.replaceAll("abcd", "dddd");
System.out.println(teste2);
Sortie:
dddd=0; efgh=1
Notez que les barres obliques inverses (_
\
_) et les signes dollar (_$
_) dans la chaîne de remplacement peuvent entraîner des résultats différents de ceux obtenus si elle était traitée comme une chaîne de remplacement littéral; voirMatcher.replaceAll
. UtilisezMatcher.quoteReplacement(Java.lang.String)
pour supprimer la signification particulière de ces caractères, si vous le souhaitez.
de javadoc .
En javascript:
var str = "abcdaaaaaabcdaabbccddabcd";
document.write(str.replace(/(abcd)/g,"----"));
//example output: ----aaaaa----aabbccdd----
Dans d'autres langues, ce serait quelque chose de similaire. N'oubliez pas d'activer les correspondances globales.
Vous ne l'assignez probablement pas après avoir effectué le remplacement ou remplacé la mauvaise chose. Essayez:
String haystack = "abcd=0; efgh=1";
String result = haystack.replaceAll("abcd","dddd");