我有一個這樣的字符串:如何有效地替換字符串中的字符
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(「^ \\ [| \\] $」,「」)'。 –
你的括號總是在字符串的開頭和末尾嗎?他們總是在場嗎? –