我有一个这样的字符串:
String line="[x1,x2,x3]";
我想从String中删除两个方括号(用空字符串替换它们)。我试过这样的话:
String x=line.replace("[","").replace("]","");
有比这更有效的方式吗?
答案 0 :(得分:2)
如果您想使用正则表达式同时删除.replaceAll
和[
同时字符串内的任何地方,您可以使用]
(实际上,相当于OP两行代码片段:
String x = line.replaceAll("[\\]\\[]+", "");
[\]\[]+
模式匹配一个或多个(+
)[
或]
个字符(这些字符必须在[....]
内转义,这是一个字符类)。
String line="[x1,x2,x3]";
String x = line.replaceAll("[\\[\\]]+", "");
System.out.println(x);
// => x1,x2,x3
答案 1 :(得分:2)
字符串是不可变的,所以你可以
String x = line.replace("[","").replace("]","");
另一种更有效的方法是使用带有 [和]
的模式的正则表达式喜欢
String x = line.replaceAll("[\\]\\[]+", "");
答案 2 :(得分:1)
如果括号始终存在,并且始终位于字符串的开头和结尾,如示例所示,则可以使用substring
:
String x2 = line.substring(1, line.length()-1);
答案 3 :(得分:0)
另一种方式:
line = line.substring(1, line.length()-1);
如果您想保留介于两者之间的方括号,则可以使用:
String line="[x1,[x2],x3]";
line = line.replaceAll("^\\[(.*)\\]$", "$1");
输出
x1,[x2],x3
答案 4 :(得分:0)
如果括号只能出现在字符串的开头和结尾,那么最快的方法(就性能而言)将使用不涉及正则表达式的substring
。
如果保证括号存在:
line = line.substring(1, line.length()-1);
如果括号是可选的:
int len = line.length();
int trimStart = (len > 0 && line.charAt(0) == '[') ? 1 : 0;
int trimEnd = (len > 0 && line.charAt(len-1) == ']') ? 1 : 0;
if (trimStart > 0 || trimEnd > 0) {
line = line.substring(trimStart, len - trimEnd);
}