相关疑难解决方法(0)

有效的Unicode字符串可以包含FFFF吗?Java/CharacterIterator坏了吗?

以下是java.text.CharacterIterator文档的摘录:

  • interface定义了一个用于文本双向迭代的协议.迭代器迭代有界字符序列.[...]方法previous()next()用于迭代.它们返回DONE[...],表示迭代器已到达序列的末尾.

  • static final char DONE:迭代器到达文本的结尾或开头时返回的常量.值是\uFFFF,不是任何有效的Unicode字符串中不应出现的"非字符"值.

斜体部分是我无法理解的部分,因为从我的测试来看,它看起来像Java String当然可以包含\uFFFF,并且似乎没有任何问题,除了明显的规定的CharacterIterator遍历习惯因为打破因为假阳性(例如,当它没有真正"完成"时next()返回'\uFFFF' == DONE).

这里有一个片段来说明"问题"(另见ideone.com):

import java.text.*;
public class CharacterIteratorTest {

    // this is the prescribed traversal idiom from the documentation
    public static void traverseForward(CharacterIterator iter) {
       for(char c = iter.first(); c != CharacterIterator.DONE; c = iter.next()) {
          System.out.print(c);
       }
    }

    public static void main(String[] args) {
        String …
Run Code Online (Sandbox Code Playgroud)

java string unicode

24
推荐指数
2
解决办法
8296
查看次数

标签 统计

java ×1

string ×1

unicode ×1