/ /文字列内の文字を効率的に置き換える方法-Java、String

Stringの文字を効率的に置き換える方法 - java、string

私はこのような文字列を持っています:

String line="[x1,x2,x3]";

両方の角かっこを文字列から削除します(空の文字列に置き換えます)。私はこのようにしてみました:

 String x=line.replace("[","").replace("]","");

これよりも効率的な方法はありますか?

回答:

回答№1は2

文字列は不変なので、次のことができます。

String x = line.replace("[","").replace("]","");

別のより効率的な方法は、両方のパターンで正規表現を使用することです [ そして ]

好きな

String x = line.replaceAll("[\]\[]+", "");

回答№2については2

あなたは使用することができます .replaceAll 正規表現を使用して両方を削除する場合 [ そして ] 同時に 文字列内のどこでも (実際には、OPの2行のコードスニペットに相当):

String x = line.replaceAll("[\]\[]+", "");

[][]+ パターンは1つ以上に一致します(+[ または ] 文字(これらは内部でエスケープする必要があります [....]、文字クラス)。

Javaデモ

String line="[x1,x2,x3]";
String x = line.replaceAll("[\[\]]+", "");
System.out.println(x);
// => x1,x2,x3

回答№3の場合は1

ブラケットが常に存在し、例に示すように常に文字列の先頭と末尾にある場合は、単に使用できます substring

String x2 = line.substring(1, line.length()-1);

回答№4の場合は0

別の方法:

line = line.substring(1, line.length()-1);

間にある角括弧を保持する場合は、次を使用できます。

String line="[x1,[x2],x3]";
line = line.replaceAll("^\[(.*)\]$", "$1");

出力

x1,[x2],x3

回答№5の場合は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);
}