简体   繁体   中英

String manipulation in java using replaceAll()

I have string of the following form:

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

Whereever [ or ] or , char are present , I just want to remove them and i want each of the word and float separated by a space. It is follows:

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

I am representing each of these string as line . i did following:

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

But it didn't work for me. There was nothing change in the input line. Any help is really appreciated.

Strings are immutable. Try

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

Or to be a bit more verbose, but avoiding regular expressions:

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

In Java, strings are immutable , meaning that the contents of a string never change. So, calling

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

won't change the contents of line , but will return a new string. You need to assign the result of the method call to a variable. For instance, if you don't care about the original line , you can write

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

to get the effect you originally expected.

[ and ] are special characters in a regular expression. replaceAll is expected a regular expression as its first input, so you have to escape them.

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

Cannot tell what you were trying to do with your original regex, why you had the $ there etc, would need to understand what you were expecting the things you put there to do.

Try

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

The regex syntax uses [] to define groups like [az] so you have to mask them.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM