Kum*_*mar 6 java string character special-characters
任何人都可以建议我如何检查是否String包含全角字符Java?全角的字符是特殊字符.
字符串中的全角字符:
?????????.???
字符串中的半角字符:
abc@gmail.com
我不确定您是否正在寻找其中一个或全部,因此以下是两者的功能:
\n\npublic static boolean isAllFullWidth(String str) {\n for (char c : str.toCharArray())\n if ((c & 0xff00) != 0xff00)\n return false;\n return true;\n}\n\npublic static boolean areAnyFullWidth(String str) {\n for (char c : str.toCharArray())\n if ((c & 0xff00) == 0xff00)\n return true;\n return false;\n}\nRun Code Online (Sandbox Code Playgroud)\n\n至于你的半宽\'.\'也有可能\'_\'。首先将它们删除并进行替换:
String str="\xef\xbd\x81\xef\xbd\x82\xef\xbd\x83\xef\xbc\xa0\xef\xbd\x87\xef\xbd\x8d\xef\xbd\x81\xef\xbd\x89\xef\xbd\x8c.\xef\xbd\x83\xef\xbd\x8f\xef\xbd\x8d";\n\nif (isAllFullWidth(str.replaceAll("[._]","")))\n //then apart from . and _, they are all full width\nRun Code Online (Sandbox Code Playgroud)\n\n或者,如果您想使用正则表达式进行测试,那么这是全角的实际字符范围:
\n\n[\\uFF01-\\uFF5E]\nRun Code Online (Sandbox Code Playgroud)\n\n所以该方法看起来像:
\n\npublic static boolean isAllFullWidth(String str) {\n return str.matches("[\\\\uff01-\\\\uff5E]*");\n}\nRun Code Online (Sandbox Code Playgroud)\n\n您可以向其中添加其他字符,因此不需要删除它们:
\n\npublic static boolean isValidFullWidthEmail(String str) {\n return str.matches("[\\\\uff01-\\\\uff5E._]*");\n}\nRun Code Online (Sandbox Code Playgroud)\n
您可以比较UNICODE 由于字母表 (az) 的 unicode 是97-122,因此您可以轻松区分两者
String str="\xef\xbd\x81\xef\xbd\x82\xef\xbd\x83\xef\xbc\xa0\xef\xbd\x87\xef\xbd\x8d\xef\xbd\x81\xef\xbd\x89\xef\xbd\x8c.\xef\xbd\x83\xef\xbd\x8f\xef\xbd\x8d";\nSystem.out.println((int)str.charAt(0));\nRun Code Online (Sandbox Code Playgroud)\n\n对于输入
\n\n\xef\xbd\x81\xef\xbd\x82\xef\xbd\x83\xef\xbc\xa0\xef\xbd\x87\xef\xbd\x8d\xef\xbd\x81\xef\xbd\x89\xef\xbd\x8c.\xef\xbd\x83\xef\xbd\x8f\xef\xbd\x8d\nRun Code Online (Sandbox Code Playgroud)\n\n输出
\n\n65345\nRun Code Online (Sandbox Code Playgroud)\n
| 归档时间: |
|
| 查看次数: |
4107 次 |
| 最近记录: |