Java an unremoveable white space string

2019-09-02 07:36发布

问题:

I have this string from mysql DB: it should be this: 2100428169/2010

this is my code

String str = rs.getString("str");
str = str.replaceAll("\\s+","");
str = str.trim();

char[] strCH = str.toCharArray();

and I get this:

[, 2, 1, 0, 0, 4, 2, 8, 1, 6, 9, /, 2, 0, 1, 0]

Why?

It's a problem because I need to use str1.equals(str) but it doesn't work because after

Object obj = (object)str;

It is in obj again with a space at the beginning like when I use toCharArray so it means equals doesn't work.

回答1:

I finally found solution:

it was problem because of ASCII 65279 is something from BOM and trim() doesn't work for it.

this helped: str = str.replace("\uFEFF", "");



回答2:

Neither replaceAll() nor trim() will work for some characters.
Actually there are several characters that could not be removed with this method. I even saw some files having characters that could not be recognized by java compiler, which creates unbelievable situations.
trim() method removes all \s from ends of string and by replaceAll() you are removing all \s from your string.
Instead use following

str = str.replaceAll("[^\\w\\\\]+", "");

You don't need to call trim() now.