我有一个这样的字符串:如何有效地替换字符串中的字符
String line="[x1,x2,x3]";
我想从字符串中删除这两个方括号(用空字符串替换它们)。我试过这样:
String x=line.replace("[","").replace("]","");
有没有比这更有效的方法?
我有一个这样的字符串:如何有效地替换字符串中的字符
String line="[x1,x2,x3]";
我想从字符串中删除这两个方括号(用空字符串替换它们)。我试过这样:
String x=line.replace("[","").replace("]","");
有没有比这更有效的方法?
您可以使用.replaceAll
如果要使用正则表达式同时字符串内的任意位置删除这两个[
和]
(实际上,OP两个线路代码段的等价物):
String x = line.replaceAll("[\\]\\[]+", "");
[\]\[]+
模式匹配一个或多个(+
)[
或]
字符(这些字符必须在[....]
字符类中转义)。
String line="[x1,x2,x3]";
String x = line.replaceAll("[\\[\\]]+", "");
System.out.println(x);
// => x1,x2,x3
字符串是不可变的,以便可以
String x = line.replace("[","").replace("]","");
另一个更有效的方式是使用正则表达式与两个[和]
像图案
String x = line.replaceAll("[\\]\\[]+", "");
谢谢你的回答。 –
不客气! –
另一种方式:
line = line.substring(1, line.length()-1);
如果您希望保留之间进来的方括号,那么你可以使用:
String line="[x1,[x2],x3]";
line = line.replaceAll("^\\[(.*)\\]$", "$1");
输出
x1,[x2],x3
如果括号总是目前,始终在开始和如示例所示的字符串的结尾,你可以用substring
:
String x2 = line.substring(1, line.length()-1);
如果括号内只能出现在开始和字符串,最快的方法结束(就性能而言)将使用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);
}
什么地方错了你目前的解决方案?尽管如此,你可以缩小到一行。 –
这看起来像是空字符串而不是'null' - 请澄清。 'X =线路。replaceAll(“^ \\ [| \\] $”,“”)'。 –
你的括号总是在字符串的开头和末尾吗?他们总是在场吗? –