在Java 8中无法替换字符串的空格字符

Ala*_*lan -1 java replace

我要从vCard("*.vcf"文件)中过滤特定容器.我过滤包含子串Photo;的行(如果匹配的话),直到特定的String ==保存在我的imageEncodingString中.不知怎的,我如果想更换的空格imageEncoding""没有被替换.

"容器"的示例:

PHOTO;ENCODING=BASE64;JPEG:/9j/4AAQSkZJRgABAQAAAQABAAD/2wBDAAIBAQEBAQIBAQE
 CAgICAgQDAgICAgUEBAMEBgUGBgYFBgYGBwkIBgcJBwYGCAsICQoKCgoKBggLDAsKDAkKCgr/==
Run Code Online (Sandbox Code Playgroud)

代码段:

else if(line.contains("PHOTO;")){
                String imageEncoding = line;

                while(true){
                    line = reader.readLine();
                    if (line.contains("==")){
                        imageEncoding = imageEncoding+line;
                        break;
                    }
                    imageEncoding = imageEncoding+line;
                }
                //imageEncoding.replaceAll(" ","");
                imageEncoding.replaceAll("\\s","");
                System.out.println(imageEncoding);

            }
Run Code Online (Sandbox Code Playgroud)

用""输出:

PHOTO;ENCODING=BASE64;JPEG:/9j/4AAQSkZJRgABAQAAAQABAAD/2wBDAAIBAQEBAQIBAQE
 CAgICAgQDAgICAgUEBAMEBgUGBgYFBgYGBwkIBgcJBwYGCAsICQoKCgoKBggLDAsKDAkKCgr/==
Run Code Online (Sandbox Code Playgroud)

用\ s输出:

PHOTO;ENCODING=BASE64;JPEG:/9j/4AAQSkZJRgABAQAAAQABAAD/2wBDAAIBAQEBAQIBAQE
 CAgICAgQDAgICAgUEBAMEBgUGBgYFBgYGBwkIBgcJBwYGCAsICQoKCgoKBggLDAsKDAkKCgr/==
Run Code Online (Sandbox Code Playgroud)

应该是什么:

PHOTO;ENCODING=BASE64;JPEG:/9j/4AAQSkZJRgABAQAAAQABAAD/2wBDAAIBAQEBAQIBAQE
CAgICAgQDAgICAgUEBAMEBgUGBgYFBgYGBwkIBgcJBwYGCAsICQoKCgoKBggLDAsKDAkKCgr/==
Run Code Online (Sandbox Code Playgroud)

字符串的行数更长,这只是一个片段.我试图替换,\\s但也没有用.

rzw*_*oot 5

  1. replaceAll在这里是多余的; 它的第一个参数是正则表达式,你显然不需要它.只需使用.replace,尽管名称,它也取代了所有.

  2. replaceAll(和replace)不修改字符串(java中的字符串是不可变的).他们创造了一个新的.所以imageEncoding.replaceAll(" ", ""),请尝试:imageEncoding = imageEncoding.replace(" ", "")