Java 如何删除所有不可打印字符+;来自字符串的表情符号?
我想从我的字符串中删除所有不可打印的字符+所有表情符号 我试过了,但它对表情符号不起作用:Java 如何删除所有不可打印字符+;来自字符串的表情符号?,java,regex,Java,Regex,我想从我的字符串中删除所有不可打印的字符+所有表情符号 我试过了,但它对表情符号不起作用: public static String removeAllNoAsciiChars(String str) { if (!TextUtils.isEmpty(str)) { str = str.replaceAll("\\p{C}", ""); } return str; } 示例: “L'alphabet est gén
public static String removeAllNoAsciiChars(String str) {
if (!TextUtils.isEmpty(str)) {
str = str.replaceAll("\\p{C}", "");
}
return str;
}
示例:
“L'alphabet est génial这个
\\p{C}
正则表达式负责所有不可打印的字符。请注意,这包括制表符和换行符
至于表情符号,这有点复杂。您可以只匹配Unicode中较新的表情符号,即(U+1F600到U+1F64F),但这并不是所有表情符号,例如(U+2764)不在该范围内
如果查看这些表情符号,例如,
\\p{C}
正则表达式会处理所有不可打印的字符。请注意,这包括制表符和换行符
至于表情符号,这有点复杂。您可以只匹配Unicode中较新的表情符号,即(U+1F600到U+1F64F),但这并不是所有表情符号,例如(U+2764)不在该范围内
如果你看那些表情符号,例如,最好指定你想要保留什么。顺便说一句,这个方法的名字很糟糕,因为你保留的不仅仅是ASCII。表情部分:你做了彻底的搜索吗?这是第二次点击。(不是我的dv)也许最好指定要保留的内容。顺便说一句,该方法的名称很糟糕,因为您保留的不仅仅是ASCII。表情符号部分:您进行了彻底的搜索吗?这是第二次命中。(不是我的dv)@YCF\L
\s
regex与[\t\n\x0B\f\r]
,但只有空格仍然存在,因为\p{C}删除了5个控制字符
匹配。我甚至在第一段中警告过这一点。由于\s
被简化为与空间相同,我将恢复您的更新。哎呀,我的坏,对不起,很好的回答:)@YCF\L\s
正则表达式与[\t\n\x0B\f\r]相同
,但只有空格仍然存在,因为5个控制字符被\p{C}
匹配项删除。我甚至在第一段中警告过这一点。由于\s
随后被缩减为与空格相同,我正在恢复您的更新。哎呀,我的错,对不起,回答很好:)