我有一个形式为“a_x,b_y,c_z”的java字符串。
我想在_
之前和,
.
所以我需要得到x,y,z。
我怎样才能做到这一点?
我正在努力使String.replaceAll(",*_",",")
工作但却收到错误:
线程“main”中的异常java.util.regex.PatternSyntaxException:在索引0附近悬挂元字符'*'
请帮忙。
答案 0 :(得分:4)
这对我有用:
String b = a.replaceAll("[\\w]_", "");
这取决于你需要替换的内容,我只考虑类\ w中的字符,但你可以调整这部分以匹配你喜欢的任何内容。
答案 1 :(得分:2)
*
表示0或更多次出现,并且本身并不意味着什么,这是一个错误。你必须指定你想要的0或更多次出现:
"a_x,b_y,c_z".replaceAll(",.*_", ",")
给出:
a_x,y,z
或更好:
"a_x,b_y,c_z".replaceAll(",[^_]*_", ",")
其中[^_]
表示任何不是_
的字符。
答案 2 :(得分:0)
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
)。