Как заменить подстроку строки
Предполагая, что у меня есть строка string
, как это:
"abcd=0; efgh=1"
и я хочу заменить "abcd" на "dddd". Я попытался сделать такую вещь:
string.replaceAll("abcd","dddd");
Это не работает. Какие-либо предложения?
EDIT:
Чтобы быть более конкретным, я работаю на Java, и я пытаюсь разобрать HTML-документ, конкретно содержание между тегами <script>
. Я уже нашел способ разбора этого содержимого в строку:
if(tag instanceof ScriptTag){
if(((ScriptTag) tag).getStringText().contains("DataVideo")){
String tagText = ((ScriptTag)tag).getStringText();
}
}
Теперь я должен найти способ, как заменить одну подстроку на другую.
Ответы
Ответ 1
Вам необходимо использовать возвращаемое значение метода replaceAll()
. replaceAll()
не заменяет символы в текущей строке, она возвращает новую строку с заменой.
- Строковые объекты являются неизменяемыми, их значения не могут быть изменены после их создания.
- Вы можете использовать replace() вместо replaceAll(), если вам не нужно регулярное выражение.
String str = "abcd=0; efgh=1";
String replacedStr = str.replaceAll("abcd", "dddd");
System.out.println(str);
System.out.println(replacedStr);
выходы
abcd=0; efgh=1
dddd=0; efgh=1
Ответ 2
Вам нужно создать переменную для назначения нового значения, например:
String str = string.replaceAll("abcd","dddd");
Ответ 3
2 вещи, которые вы должны отметить:
- Строки в Java неизменяемы, поэтому вам нужно сохранить возвращаемое значение вызова метода where в другой строке.
- Здесь вам действительно не нужно регулярное выражение, просто выполните этот вызов
String#replace(String)
.
Поэтому просто используйте этот код:
String replaced = string.replace("abcd", "dddd");
Ответ 4
В regex я думаю, что это java, метод replaceAll()
возвращает новую строку с заменой подстрок, поэтому попробуйте следующее:
String teste = "abcd=0; efgh=1";
String teste2 = teste.replaceAll("abcd", "dddd");
System.out.println(teste2);
Вывод:
dddd=0; efgh=1
Ответ 5
Обратите внимание, что обратная косая черта (\
) и знак доллара ($
) в строке замены могут привести к тому, что результаты будут отличаться от результатов, которые обрабатываются как буквенная строка замены; смотрите Matcher.replaceAll
. Используйте Matcher.quoteReplacement(java.lang.String)
чтобы при желании подавить специальное значение этих символов.
от Javadoc.
Ответ 6
В javascript:
var str = "abcdaaaaaabcdaabbccddabcd";
document.write(str.replace(/(abcd)/g,"----"));
//example output: ----aaaaa----aabbccdd----
В других языках это было бы нечто похожее. Не забудьте включить глобальные совпадения.
Ответ 7
Вероятно, вы не назначаете его после замены или замены неправильной вещи.
Попробуйте:
String haystack = "abcd=0; efgh=1";
String result = haystack.replaceAll("abcd","dddd");