我可以这样创建AttributedString

AttributedString as = new AttributedString("Hello world");


直截了当的问题-如何从AttributedString对象获取基础文本(“ Hello world”)?

as.toString()产生字符串“ java.text.AttributedString@65f00565”

我在AttributedString.class中看到此信息已存储,但故意设为私有-


  所有(长度除外)读取操作都是私有的,
  由于AttributedString实例是通过迭代器访问的


如此看来,我需要使用as.getIterator()来获取AttributedCharacterIterator并对其进行迭代以生成基础字符串?这是最好的方法吗?为什么这么难获得这些信息?

最佳答案

好吧,这是执行您要求的实际代码:

    AttributedString s = new AttributedString("Hello");
    AttributedCharacterIterator x = s.getIterator();
    String a = "";

    a+=x.current();
    while (x.getIndex() < x.getEndIndex())
        a += x.next();
    a=a.substring(0,a.length()-1);

    System.out.println(a);


至于适当性,我参考AttributedString的文档,特别是getIterator()方法的文档:


  创建一个AttributedCharacterIterator实例,该实例提供对该字符串的全部内容的访问。


似乎没有其他方法可以访问实际的String内容。

10-06 14:34