Подтвердить что ты не робот

Как заменить подстроку строки

Предполагая, что у меня есть строка 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();
      }
}

Теперь я должен найти способ, как заменить одну подстроку на другую.

4b9b3361

Ответ 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");