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

如何遍历Java字符串的unicode代码点?

黎鹤轩
2023-03-14
问题内容

所以我知道String#codePointAt(int),但是它是通过char偏移量而不是代码点偏移量索引的。

我正在考虑尝试类似的方法:

  • 使用String#charAt(int)得到char的指数
  • 测试是否char在高替代范围内
  • 如果是这样,请使用String#codePointAt(int)以获得代码点,并将索引增加2
  • 如果不是,则使用给定char值作为代码点,并将索引增加1

但是我担心的是

  • 我不确定自然位于高代理范围内的代码点是否将存储为两个char值或一个
  • 这似乎是一种遍历字符的可怕的昂贵方法
  • 一定有人想出了更好的东西。

问题答案:

是的,Java对字符串的内部表示使用UTF-16式编码,是的,它使用替代方案对基本多语言平面(BMP)之外的字符进行编码。

如果你知道将要处理BMP之外的字符,那么以下是遍历Java String字符的规范方法:

final int length = s.length();
for (int offset = 0; offset < length; ) {
   final int codepoint = s.codePointAt(offset);

   // do something with the codepoint

   offset += Character.charCount(codepoint);
}


 类似资料:
  • 问题内容: 我想遍历s1以确保s1中的每个字符都包含在s2中。 问题答案:

  • 问题内容: 如何遍历Java中的字符串? 我正在尝试使用foreach样式进行循环 问题答案: 如果要使用增强循环,可以将字符串转换为charArray

  • 问题内容: 我有这样定义的多行字符串: 我们用作我正在编写的解析器的测试输入的字符串。解析器功能接收-object作为输入并对其进行迭代。它还确实直接调用该方法以跳过行,因此我确实需要一个迭代器作为输入,而不是可迭代的。我需要一个迭代器,它可以在字符串的各个行之间进行迭代,就像-object可以在文本文件的行之间进行迭代一样。我当然可以这样: 是否有更直接的方法?在这种情况下,字符串必须遍历一次以

  • 问题内容: 例如,假设我想列出一个字符串中每个字母的频率。最简单的方法是什么? 这是我在想的一个例子…问题是如何使allTheLetters等于所说的字母,而没有allTheLetters =“ abcdefg … xyz”之类的东西。在许多其他语言中,我可以只做字母+ +来增加字母的顺序,但是到目前为止,我还没有找到在python中做到这一点的方法。 问题答案: 您所问的问题(如何遍历字母)与您

  • 问题内容: 假设我有一个包含Ü的字符串。我将如何找到所有这些unicode字符?我应该测试他们的代码吗?我该怎么做? 例如,给定字符串“AÜXÜ”,我想将其转换为“ AYXY”。我想对其他unicode字符执行相同的操作,并且我不希望将它们存储在某种翻译图中。 问题答案: “ unicode字符”的定义含糊不清,但是将被视为表示标准ISO 8859字符集 未涵盖的UTF-8 字符。如果您的情况是这