Ervan uitgaande dat ik een String string
heb zoals deze:
"abcd=0; efgh=1"
en ik wil “abcd” vervangen door “dddd”. Ik heb geprobeerd zoiets te doen:
string.replaceAll("abcd","dddd");
Het werkt niet. Eventuele suggesties?
BEWERKEN:
Om specifieker te zijn, ik werk in Java en ik probeer het HTML-document te ontleden, in het bijzonder de inhoud tussen <script>
-tags. Ik heb al een manier gevonden om deze inhoud in een string te ontleden:
if(tag instanceof ScriptTag){
if(((ScriptTag) tag).getStringText().contains("DataVideo")){
String tagText = ((ScriptTag)tag).getStringText();
}
}
Nu moet ik een manier vinden om de ene substring door een andere te vervangen.
Antwoord 1, autoriteit 100%
U moet de retourwaarde van replaceAll()
methode. replaceAll()
vervangt de tekens in de huidige tekenreeks niet, maar retourneert een nieuwe tekenreeks met vervanging.
- String-objecten zijn onveranderlijk, hun waarden kunnen niet worden gewijzigd nadat ze zijn gemaakt.
- Je mag vervangen() gebruiken in plaats van ReplaceAll() als je geen regex nodig hebt.
String str = "abcd=0; efgh=1";
String replacedStr = str.replaceAll("abcd", "dddd");
System.out.println(str);
System.out.println(replacedStr);
uitgangen
abcd=0; efgh=1
dddd=0; efgh=1
Antwoord 2, autoriteit 17%
2 dingen waar u op moet letten:
- Tekenreeksen in Java zijn onveranderlijk, dus u moet de retourwaarde van de aanroep van de methode daar in een andere tekenreeks opslaan.
- Je hebt hier niet echt een regex nodig, alleen een simpele oproep naar
String#replace(String)
zal het werk doen.
Gebruik dus gewoon deze code:
String replaced = string.replace("abcd", "dddd");
Antwoord 3, autoriteit 16%
U moet de variabele maken waaraan u de nieuwe waarde wilt toewijzen, als volgt:
String str = string.replaceAll("abcd","dddd");
Antwoord 4, autoriteit 11%
Bij regex denk ik dat dit java is, de methode replaceAll()
retourneert een nieuwe string met de substrings vervangen, dus probeer dit:
String teste = "abcd=0; efgh=1";
String teste2 = teste.replaceAll("abcd", "dddd");
System.out.println(teste2);
Uitvoer:
dddd=0; efgh=1
Antwoord 5, autoriteit 5%
Merk op dat backslashes (
\
) en dollartekens ($
) in de vervanging
string kan ervoor zorgen dat de resultaten anders zijn dan wanneer het zou zijn
behandeld als een letterlijke vervangende string; zien
Matcher.replaceAll
.
Gebruik maken van
Matcher.quoteReplacement(java.lang.String)
om de speciale betekenis van deze tekens te onderdrukken, indien gewenst.
van javadoc.
Antwoord 6
In javascript:
var str = "abcdaaaaaabcdaabbccddabcd";
document.write(str.replace(/(abcd)/g,"----"));
//example output: ----aaaaa----aabbccdd----
In andere talen zou het iets soortgelijks zijn. Vergeet niet om algemene overeenkomsten in te schakelen.
Antwoord 7
Je wijst het waarschijnlijk niet toe nadat je de vervanging hebt gedaan of het verkeerde hebt vervangen.
Probeer :
String haystack = "abcd=0; efgh=1";
String result = haystack.replaceAll("abcd","dddd");