已解决
java如何判断字符串中是否包含数字字母汉字之外的字符,如何替换字符串中除字母数字汉字之外的字符?
来自网友在路上 188888提问 提问时间:2023-11-19 04:17:30阅读次数: 88
最佳答案 问答题库888位专家为你答疑解惑
1. 判断字符串中是否包含数字字母汉字之外的字符
String b ="123aA-";Pattern pattern = Pattern.compile("^[a-zA-Z0-9\\p{Script=Han}]+$");Matcher matcher = pattern.matcher(b);System.out.println(matcher.matches());
^: 表示匹配字符串的开始。
[a-zA-Z0-9]: 表示字符类,匹配任何一个字母(大小写)或数字。
\\p{Script=Han}: 使用 Unicode 属性,匹配任何汉字字符。
+: 表示匹配前面的字符类(字母、数字和汉字)一次或多次。
$: 表示匹配字符串的结尾。
2. 替换字符串中除字母数字汉字之外的字符
String a = "··zxcc····cc··▪▪c一刘甪鉨㘗123c▪▪▪vv·";
// replace:匹配字符;replaceAll:优先匹配正则,也可以匹配字符。共同点是:两者都是全部替换
System.out.println(a.replaceAll("[^0-9a-zA-Z\\p{Script=Han}]", ""));
"[^0-9a-zA-Z\p{Script=Han}]"[^...]: 表示否定字符类,匹配不在括号内的任何一个字符。
0-9: 匹配任何数字。
a-zA-Z: 匹配任何字母(大小写)。
\\p{Script=Han}: 使用 Unicode 属性,匹配任何汉字字符。
因此,这个正则表达式表示匹配任何不是数字、字母(大小写)或汉字的字符。
3. \p{Script=Han} 匹配所有汉字
\p{Script=Han} 表示匹配所有汉字字符。这样,无论将来 Unicode 是否有扩展,只要是属于汉字的字符,都可以被匹配。这样的写法使得你不需要在代码中更改范围,而是使用 Unicode 属性,更加灵活和健壮。
\u4e00-\u9fa5 之类的也可以匹配汉字,但汉字在不停扩充,新扩充的不包含在内。
下面是几个主要的非英文语系字符范围:
2E80~33FFh:中日韩符号区。收容康熙字典部首、中日韩辅助部首、注音符号、日本假名、韩文音符,中日韩的符号、标点、带圈或带括符文数字、月份,以及日本的假名组合、单位、年号、月份、日期、时间等。
3400~4DFFh:中日韩认同表意文字扩充A区,总计收容6,582个中日韩汉字。
4E00~9FFFh:中日韩认同表意文字区,总计收容20,902个中日韩汉字。
A000~A4FFh:彝族文字区,收容中国南方彝族文字和字根。
AC00~D7FFh:韩文拼音组合字区,收容以韩文音符拼成的文字。
F900~FAFFh:中日韩兼容表意文字区,总计收容302个中日韩汉字。
FB00~FFFDh:文字表现形式区,收容组合拉丁文字、希伯来文、阿拉伯文、中日韩直式标点、小符号、半角符号、全角符号等。
查看全文
99%的人还看了
相似问题
猜你感兴趣
版权申明
本文"java如何判断字符串中是否包含数字字母汉字之外的字符,如何替换字符串中除字母数字汉字之外的字符?":http://eshow365.cn/6-38899-0.html 内容来自互联网,请自行判断内容的正确性。如有侵权请联系我们,立即删除!