ОШИБКА — висячий метасимвол ‘*’ рядом с индексом 0 * 1

#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