#java #string
#java #строка
Вопрос:
У меня есть строка, которая
String result = "106*151*154*145*40*145*156*143*157*144*145*162*41";
Я хочу заменить сегмент «* 1». Но я потерпел неудачу
result.replaceAll("*1", "A");
Если я использую это, я получаю ошибку : Dangling meta character '*' near index 0 *1
Я пытаюсь заменить весь сегмент «* 1», но это выдает ошибку.
Комментарии:
1. Вам не хватает закрывающей двойной кавычки
String result = "106*151...
. Голосование за закрытие как вопрос с опечаткой.2. Попробуйте сделать
"*1"
вместо"*1"
. Поскольку Java называет его метасимволом, его, вероятно, можно экранировать с помощью обратной косой черты, чтобы превратить в обычный символ. (String.replaceAll()
предположительно, принимает регулярное выражение)
Ответ №1:
Первым replaceAll()
параметром метода является регулярное выражение. В *
регулярном выражении это метасимвол, который используется для ‘ноль или более раз’, например, с .*
или [0-9]*
. Используемый сам по себе, он «запутывается». Чтобы ссылаться *
на сам символ, вам нужно экранировать его с
помощью, который вам нужно снова экранировать в строках Java.
Поэтому используйте replaceAll("\*", "A")
Комментарии:
1. Спасибо, но у меня проблема, то есть у меня есть строка, которая равна «* 1» и другая строка, в другой строке, как я могу добавить «//» «*1»? Если я попытаюсь это сделать, это не сработает
2. Как указывали другие, вы можете использовать метод replace() вместо replaceAll() . Он также заменяет все вхождения первого параметра и обрабатывает первый параметр как простую строку, а не регулярное выражение. Вам также не нужно экранировать
*
с ним.3. @Ridcully Да, это то, что я сделал.
Ответ №2:
Прикрепите \
перед "*1"
разделителем.
String result = "106*151*154*145*40*145*156*143*157*144*145*162*41";
System.out.println(result.replaceAll("\*1", "A"));
Ответ №3:
Я объединил *
и 1
, чтобы сопоставить *1
, и заменил его A
.
class StackOverflow
{
public static void main(String[] args)
{
String result = "106*151*154*145*40*145*156*143*157*144*145*162*41";
String find = "*" "1";
result = result.replace(find, "A");
System.out.println(result);
}
}
//Output:
//106A51A54A45*40A45A56A43A57A44A45A62*41