我可以这样创建一个AttributedString
:
AttributedString as = new AttributedString("Hello world");
直截了当的问题 - 如何从AttributedString对象获取基础文本(" Hello world")?
as.toString()
生成字符串" java.text.AttributedString@65f00565"
我在AttributedString.class
中看到此信息已存储,但故意隐私 -
所有(除长度外)读取操作都是私有的, 因为通过迭代器
访问了AttributedString实例
所以看起来我需要使用as.getIterator()
来获取AttributedCharacterIterator
并迭代它以生成底层字符串?这是最好的方法,为什么这些信息无法访问?
答案 0 :(得分:3)
这就是你要问的实际代码:
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
内容。
答案 1 :(得分:0)
public static String getString(AttributedString attributedString){
AttributedCharacterIterator it = attributedString.getIterator();
StringBuilder stringBuilder = new StringBuilder();
char ch = it.current();
while( ch != CharacterIterator.DONE)
{
stringBuilder.append( ch);
ch = it.next();
}
return stringBuilder.toString();
}