Как избавиться от этих подстрок из строки в Java? - PullRequest
2 голосов
/ 24 февраля 2012

У меня есть строка Java в форме "a_x, b_y, c_z".

Я бы хотел избавиться от чанка до _ и после , .

Поэтому мне нужно получить x, y, z.

Как мне этого добиться?
Я пытаюсь заставить String.replaceAll(",*_",",") работать, но получаю ошибку:

Исключение в потоке "main"java.util.regex.PatternSyntaxException: висячий метасимвол '*' рядом с индексом 0

Пожалуйста, помогите.

Ответы [ 3 ]

4 голосов
/ 24 февраля 2012

это работает для меня:

String b = a.replaceAll("[\\w]_", "");

Это зависит от того, что вам нужно заменить, я рассматриваю только символы в классе \ w, но вы можете настроить эту часть так, чтобы она соответствовала вашему вкусу.

2 голосов
/ 24 февраля 2012

* означает 0 или более вхождений, и само по себе ничего не значит, это ошибка.Вы должны указать, что вы хотите 0 или более вхождений:

"a_x,b_y,c_z".replaceAll(",.*_", ",")

дает:

a_x,y,z

или лучше:

"a_x,b_y,c_z".replaceAll(",[^_]*_", ",")

где [^_]означает любой символ, который не является _.

0 голосов
/ 24 февраля 2012
String input = "a_x,b_y,c_z";
for (String split : input.split(","))
{
  String output = split.split("_")[1];
  System.out.println(output);
}

Переменная output изменяется для каждой итерации цикла (с x до y до z).

...