我按空格分割这个字符串:String input = ":-) :) :o) :] :3 :c) :> =] 8) =) :} :^)";
(表情符号之间的空格)
结果是:
:-)?:)?:o)?:]?:3?:c)?:>
=]
8)
=)?:}?:^)
结果中有一些奇怪的字符。我不知道为什么。请帮帮我。
以下是代码:
fileReader = new BufferedReader(new FileReader("emoticon.txt"));
String line = "";
while ((line = fileReader.readLine()) != null){
String[] icons = parts[0].split("\\s+");
....
}
感谢任何建议。
这是表情符号文件:
https://www.dropbox.com/s/6ovz0aupqo1utrx/emoticon.txt
答案 0 :(得分:5)
String input = ":-) :) :o) :] :3 :c) :> =] 8) =) :} :^)";
String[] similies = input.split(" ");
for (String simili : similies) {
System.out.println(simili);
}
这很好用。 输出:
:-)
:)
:o)
:]
:3
:c)
:>
=]
8)
=)
:}
:^)
如果有任何制表符/换行符/空格并且你想要拆分,那么你可以使用
input.split("\\s+");
在你的例子中,有更多的字符是他们喜欢的和非破坏的空格,所以你必须明确处理这些类型的字符。这是代码:
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("=======================");
}
}
答案 1 :(得分:2)
他们可能不仅仅是空间角色;他们可能是标签等。
相反,尝试拆分空白字符(正则表达式\s
),而不仅仅是空格字符:
String[] emoticons = input.split("\\s+");
我分析了评论中提到的文件,发现有些“空格”实际上是十进制值160
(十六进制A0
)的字符。通过更改拆分正则表达式以包含此字符,我能够拆分每个表情符号:
String[] emoticons = input.split("[\\s\u00A0]+");
答案 2 :(得分:1)
由于您在输出中看到换行符,这可能意味着您输入的原始字符串可能包含空格作为换行符,制表符等,而不是空格。
因此,您需要在空格上拆分字符串:
String[] spiltted = input.split("\\s+");
答案 3 :(得分:0)