当前位置: 首页 > 面试题库 >

将字符与代码点进行比较?

苏鸿才
2023-03-14
问题内容

将代码点与Java字符进行比较的“正确”方法是什么?例如:

int codepoint = String.codePointAt(0);
char token = '\n';

我知道我可以做到:

if (codepoint==(int) token)
{ ... }

但是这段代码看起来很脆弱。有没有比较正式的API方法codepointschars,或转换char到一个codepoint比较?


问题答案:

有一点背景知识:Java在1995年出现时,该char类型基于原始的“ Unicode
88
”规范,该规范限于16位。一年后,当Unicode
2.0实施时,替代字符的概念超出了16位的限制。

Java内部String以utf-16格式表示所有。对于超过U +
FFFF的代码点,代码点由代理对表示,即两个chars,第一个是高代理代码单元(在\ uD800- \
uDBFF范围内),第二个是低代理代码单位(范围为\ uDC00- \ uDFFF)。

从早期开始,所有基本Character方法都基于一个代码点可以在一个中表示的假设char,因此这就是方法签名的样子。我猜想保留向后兼容性,当Unicode
2.0出现时,向后兼容性不会改变,在处理它们时需要谨慎。引用Java文档:

  • 仅接受char值的方法不能支持补充字符。他们将代理范围中的char值视为未定义字符。例如,Character.isLetter(’\ uD840’)返回false,即使该特定值(如果在字符串中后接任何低替代值都表示一个字母)也是如此。
  • 接受int值的方法支持所有Unicode字符,包括补充字符。例如,Character.isLetter(0x2F81A)返回true,因为代码点值表示字母(CJK表意文字)。

铸造char一个int,因为你的样品做,做工精细,虽然。



 类似资料:
  • 问题内容: 这个问题已经在这里有了答案 : Python If == true语句仅在readline的最后一行有效 (1个答案) 2年前关闭。 我试图将我的一行与一个字符串进行比较,但是这行不通。我正在读取一个html文件,我需要解析该文件以将该部分发送到字典,但是当我使用if将行之一与字符串进行比较时,匹配时不会返回True。 这是代码: 问题答案: 我认为这是因为它尝试读取字符串中的换行符:

  • 如何比较两个列表是否相等验证数据来自Excel工作表。我需要验证两个列表是否相同,并且列表中没有附加元素或缺少元素。我不需要对列表进行排序。打印输出CAGID Excel data=CAGID Web列表

  • 以下代码的输出为假 我不明白。我想它会返回true。在我为SCJP做准备时,了解其背后的原因可能会有所帮助。有人能帮忙吗?

  • 我试图编写一个程序,其中我必须做与模板(本质上是一个字符串)之间的字符串列表的比较。我不知道什么是使用的术语,但它将是更多的日志刮削程序,如果这是有帮助的。 null 这个想法是将输入语句(1-4)与模板字符串(a-b)匹配,如果它们匹配,那么我需要对它们进行操作。Like 1和4匹配句子b,但2不匹配。 提前感谢您的帮助/指示。

  • 我对c语言不太精通,我对 逐个字符遍历char* 正确比较单个字符和另一个字符 给定一个类似“abcda”的字符串,我想计算“a”的数量并返回计数 我也不应该使用strlen() 如何正确地一次比较一个字符?