java中的字符串拆分不起作用?

Hoa*_* Vu 3 java split emoticons

我按空格分割这个字符串:( String input = ":-) :) :o) :] :3 :c) :> =] 8) =) :} :^)";表情符号之间的空格)

结果是:

:-)?:)?:o)?:]?:3?:c)?:>
=]

8)

=)?:}?:^)
Run Code Online (Sandbox Code Playgroud)

结果中有一些奇怪的字符.我不知道为什么.请帮我.

这是代码:

fileReader = new BufferedReader(new FileReader("emoticon.txt"));
String line = "";
while ((line = fileReader.readLine()) != null){
    String[] icons = parts[0].split("\\s+");
    ....
}
Run Code Online (Sandbox Code Playgroud)

感谢任何建议.这是表情符号文件:https:
//www.dropbox.com/s/6ovz0aupqo1utrx/emoticon.txt

Ash*_*wal 5

String input = ":-) :) :o) :] :3 :c) :> =] 8) =) :} :^)";
String[] similies = input.split(" ");
for (String simili : similies) {
    System.out.println(simili);
}
Run Code Online (Sandbox Code Playgroud)

这很好用.输出:

:-)
:)
:o)
:]
:3
:c)
:>
=]
8)
=)
:}
:^)
Run Code Online (Sandbox Code Playgroud)

如果有任何制表符/换行符/空格并且您想要拆分,那么在这种情况下您可以使用

input.split("\\s+"); 
Run Code Online (Sandbox Code Playgroud)

在你的例子中,有更多的字符是他们的喜欢和非破坏的空格,所以你必须明确处理这些类型的字符.这是代码:

public static void main(final String[] args) throws Exception {
    BufferedReader fileReader = new BufferedReader(new FileReader("emoticon.txt"));
    String line = "";
    while ((line = fileReader.readLine()) != null) {
        line = line.replaceAll("Â", "");
        line = line.replace("" + ((char) 160), " ");
            System.out.println("line: " + line);
        String[] icons = line.split("\\s+");
        for (String icon : icons) {
            System.out.println(icon);
        }
        System.out.println("=======================");
    }
}
Run Code Online (Sandbox Code Playgroud)