簡體   English   中英

使用replaceAll()在Java中進行字符串操作

[英]String manipulation in java using replaceAll()

我有以下形式的字符串:

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

無論存在[ or ] or , char,我只想刪除它們,並且我想將單詞和浮點數中的每一個都用空格隔開。 如下:

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

我將每個字符串表示為line 我做了以下:

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

但這對我沒有用。 輸入行沒有任何變化。 任何幫助都非常感謝。

字符串是不可變的。 嘗試

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

或者更詳細些,但避免使用正則表達式:

char subst = ' ';
line = line.replace('[', subst).replace(']', subst).replace(',', subst);

在Java中,字符串是不可變的 ,這意味着字符串的內容永遠不會改變。 所以,打電話

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

不會更改line的內容,但是會返回一個新字符串。 您需要將方法調用的結果分配給變量。 例如,如果您不在乎原始line ,則可以編寫

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

達到您最初預期的效果。

[]是正則表達式中的特殊字符。 replaceAll應該作為正則表達式作為其第一個輸入,因此您必須對其進行轉義。

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

無法告訴您您想使用原始正則表達式做什么,為什么在那里有$等,則需要了解您對放置在其中的事情的期望。

嘗試

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

regex語法使用[]定義類似[az]因此您必須屏蔽它們。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM