【问题标题】:How to generate Unicode "Immutable Identifiers" chars in Java?如何在 Java 中生成 Unicode“不可变标识符”字符?
【发布时间】:2021-03-24 04:02:01
【问题描述】:

我正在尝试验证依赖项是否可以使用称为 Immutable identifier:http://www.unicode.org/reports/tr31/#Immutable_Identifier_Syntax 的特定 unicode 字符

“不可变标识符”字符的定义是

Immutable Identifiers: To meet this requirement, an implementation shall define identifiers to be any non-empty string of characters that contains no character having any of the following property values:

Pattern_White_Space=True
Pattern_Syntax=True
General_Category=Private_Use, Surrogate, or Control
Noncharacter_Code_Point=True

我能够找出https://docs.oracle.com/javase/7/docs/api/java/lang/Character.html 中的SurrogatePRIVATE_USEControl 字符,但找不到其余字符。 这个 Unicode 文档对我来说也有点复杂,所以我无法理解它并找到了那些“不可变标识符”字符的代码点范围 :(。任何有上下文的人都可以发光吗?

【问题讨论】:

  • 就目前而言,您的问题含糊不清。您能否对其进行更新以准确说明您需要帮助的内容?另外,请向我们展示您迄今为止为识别不可变字符所做的工作。如果您的问题中没有任何代码,则更有可能被否决和/或关闭。

标签: java unicode


【解决方案1】:

Pattern 的javadoc 开始,尤其是(Unicode)类表。但它也包含 Unicode 参考链接。

"\\p{Space}"   // Whitespace
"\\p{Punct}"   // Interpunction
"\\p{M}"       // Combined diacritical marks, zero-width accents

还有更多。

此外,您可能想要规范化标识符。 “é”可以写成一个 Unicode 代码点,或两个代码点:一个拉丁文 e 和一个零宽度重音符号。 java.text.Normalizer 可以做到这一点。压缩(一个代码点)似乎最好。


请查看UAX

"\\p{Pattern_Syntax}"

不确定,但 Pattern_Syntax 字符可能包含 []?+*.,所以我认为 Interpunction 也会这样做。

【讨论】:

  • 我检查了文档并没有找到我想要访问的字符。例如,Pattern_Syntax 类别未在表中找到
  • Pattern 的 javadoc 无法记录所有内容 - Java SE 中包含多少 Unicode 知识已经令人惊讶。因此,必须深入研究 Unicode 参考资料。或者,也许您可​​以找到所有这些类别名称的 Java 源代码。添加到答案 Pattern_Syntax。
猜你喜欢
  • 1970-01-01
  • 2013-04-09
  • 1970-01-01
  • 1970-01-01
  • 2010-09-16
  • 1970-01-01
  • 2010-11-12
  • 1970-01-01
相关资源
最近更新 更多