【发布时间】:2018-12-13 12:10:42
【问题描述】:
我想从字符串中提取表情符号和字母字符到一个集合中,只需字符串具有任何类型的表情符号字符,例如活动、家庭、旗帜、动物符号,并且还具有字母字符。当我从EditText 得到字符串时,它类似于“AB????C????D?????????????????????????E????️ ????????”。我尝试了,但不幸的是,收集数组与我的期望不一样,任何人都可以建议我,我需要为预期的收集数组做什么?
使用 Eclipse 我尝试了这段代码,如果我错了,请纠正我
public class CodePoints {
public static void main(String []args){
List<String> list = new ArrayList<>();
for(int codePoint : codePoints("AB????C????D????????????????E????️????????")) {
list.add(String.valueOf(Character.toChars(codePoint)));
}
System.out.println(Arrays.toString(list.toArray()));
}
public static Iterable<Integer> codePoints(final String string) {
return new Iterable<Integer>() {
public Iterator<Integer> iterator() {
return new Iterator<Integer>() {
int nextIndex = 0;
public boolean hasNext() {
return nextIndex < string.length();
}
public Integer next() {
int result = string.codePointAt(nextIndex);
nextIndex += Character.charCount(result);
return result;
}
public void remove() {
throw new UnsupportedOperationException();
}
};
}
};
}
}
输出:
[A, B, ????, C, ????, D, ????, , ????, , ????, , ????, E, ??? ?, ️, , ????, , ????]
预期:
[A、B、????、C、????、D、????????????????????、E、??????️???? , ????]
【问题讨论】:
-
看来你想要拆分而不是拆分和过滤(对我来说提取意味着过滤)。查看 break 迭代器以确保您不会在“组合字符”之间进行拆分。
标签: java android utf-8 character emoji