1

私は次の形式の文字列を持っています:

भन्‍‌ने [-0.4531954191090929, 0.7931147934270654, -0.3875088408737827, -0.09427394940704822, 0.10065554475134718, -0.22044284832864797, 0.3532556916833505, -1.8256229909222224, 0.8036832111904731, 0.3395868096795993]

char [ or ] or ,が存在する場合は常に、それらを削除したいので、各単語とfloatをスペースで区切ってください。それは次のとおりです。

भन्‍‌ने -0.4531954191090929 0.7931147934270654 -0.3875088408737827 -0.09427394940704822 0.10065554475134718 -0.22044284832864797 0.3532556916833505 -1.8256229909222224 0.8036832111904731 0.3395868096795993

私はこれらの文字列のそれぞれを。として表していlineます。私は次のことをしました:

line.replaceAll("([|]|,)$", " ");

しかし、それは私にはうまくいきませんでした。入力行に変更はありませんでした。どんな助けでも本当にありがたいです。

4

4 に答える 4

3

文字列は不変です。試す

line = line.replaceAll("([|]|,)$", " ");

または、もう少し冗長になりますが、正規表現は避けます。

char subst = ' ';
line = line.replace('[', subst).replace(']', subst).replace(',', subst);
于 2012-04-25T20:03:39.183 に答える
2

Javaでは、文字列は不変です。つまり、文字列の内容は変更されません。だから、

line.replaceAll("([|]|,)$", " ");

の内容は変更されませんがline、新しい文字列が返されます。メソッド呼び出しの結果を変数に割り当てる必要があります。たとえば、オリジナルを気にしない場合は、次のlineように書くことができます

line = line.replaceAll("([|]|,)$", " ");

あなたが最初に期待した効果を得るために。

于 2012-04-25T20:03:26.180 に答える
1

[および]は正規表現の特殊文字です。replaceAllは、最初の入力として正規表現であることが期待されているため、それらをエスケープする必要があります。

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

元の正規表現で何をしようとしていたのか、なぜそこに$があったのかなどがわからない場合は、そこに置いた処理に何を期待していたのかを理解する必要があります。

于 2012-04-25T20:17:57.623 に答える
1

試す

line = "asdf [foo, bar, baz]".replaceAll("(\\[|\\]|,)", "");

正規表現構文は[]、のようなグループを定義するために使用する[a-z]ため、それらをマスクする必要があります。

于 2012-04-25T20:19:20.463 に答える