java - 如何只在字符串中保留不同类型的字母,例如:拉丁字母、片假名、西里尔字母
问题描述
我想使用正则表达式从字符串中只提取字母。这些字母可以来自任何类型的字母。
我想获取文本并删除所有不是字母的符号(保留空格)。我厌倦了使用正则表达式删除一组符号,但是添加一路上发现的所有新类型的符号效率非常低。
解决方案
该功能Character.isAlphabetic(int codepoint)
很可能是您正在寻找的。
如果Character.getType(int codepoint)
返回给定 Unicode 代码点的字母类型,则返回 true。由于这是 Unicode,它可以与其他语言一起使用。例如,代码:
String str = "カタカナ 1234";
IntStream.range(0, str.length())
.mapToObj(str::charAt)
.filter(Character::isAlphabetic)
.forEach(System.out::print);
给出输出:
????
由于我的控制台不知道如何打印非 ascii 符号,它会打印问号(注意输出中的 4 个符号对应于 4 个输入字母字符)。但是,将数据写入文件会正确显示符号。
请注意,您可能还希望为需要它的语言(大多数,但不是全部)包含空格,使用Character.isWhitespace(int codepoint)
.
推荐阅读
- xslt - 使用单个 XSLT 生成 XML 和 JSON 文件
- ejs - 扩展 EJS 包含功能
- html - 我怎样才能使背景图像像图片中的 img-fluid 一样表现得像 img
- javascript - Vue3反向函数
- scala - 什么是预定义的字符串格式?
- java - 沙盒测试的 Applepay 域验证
- java - 如何解决本机 Java 或 Kotlin 中的错误“在依赖项的 AAR 元数据中指定的 minCompileSdk (31)”?
- c - 从实数浮点数到整数的转换是否需要将该值截断为零以方便将代码从 Fortran 移植到 C?
- javascript - 接收“坐标必须是两个或多个位置的数组”错误
- intellij-idea - Intellij IDEA - DB Navigator - 显示密码