作者:gaoming1010_143 | 来源:互联网 | 2023-01-03 09:45
1> Andreas..:
在\\p{C}
正则表达式采取所有非打印字符的照顾。请注意,这包括选项卡和换行符。
至于表情符号字符,则有点复杂。您可以用Unicode匹配较新的Emoji字符,即Unicode块“ Emoticons”(U + 1F600到U + 1F64F),但这并不是所有Emoji字符,例如?“重黑心”(U + 2764)不在该范围内。
如果查看那些Emoji字符,例如'GRINNING FACE'(U + 1F600),您会发现它属于Unicode类别“ Symbol,Other [So] ”,由5855个字符组成。如果您可以删除所有这些内容,那肯定是最简单的解决方案。
您的文本包含一个红色的心(??),而不是一个黑色的心(?),这可以通过在Unicode之后通过在黑色的心之后添加变体选择器来实现,例如,在此文本中使用'VARIATION SELECTOR-16'(U + FE0F)案件。有256个变体选择器,它们都在Mark,Nonspacing [Mn]类别中,但是您可能不想删除所有的1763个变体选择器,因此需要删除2个范围的变体选择器,即U + FE00到U + FE0F(选择器1-16)和U + E0100至U + E01EF(选择器17-256)。
之后,您可能会或可能不想将连续的空格减少到一个空格。
str = str.replaceAll("[\\p{C}\\p{So}\uFE00-\uFE0F\\x{E0100}-\\x{E01EF}]+", "")
.replaceAll(" {2,}", " ");