Java2 类库解析 — java.text.AttributedCharacterIterator
来源:田浩然上传资料 / 电子书 / java / Java2 类库 / 20.pdf(第 20 章节选,7 页)
核心内容
本篇是《Java2 类库解析》一书对 java.text.AttributedCharacterIterator 接口的逐条解析,属于 Java2 文本处理(java.text 包)部分。
接口定位
public interface AttributedCharacterIterator extends CharacterIterator- 为迭代程序定义”属性文本”的访问方法:文本由 Unicode 字符 + 相关属性信息组成。
- 支持检索:字符、属性关键字与值、属性的起始/结束字符下标。
- 返回的字符受迭代器 range 限制;属性信息受”包含当前字符的场所(field)“限制。
- 创建方式:调用文本存储对象的
getIterator()。java.text包提供的实现是AttributedString(基于 String);也可自定义其他字符存储类型。
属性(Attribute)概念
- 属性是附加到文本上以丰富/标识其特征的信息:语言、发音、字体、大小、样式、对齐、颜色、场指示、上标、宽度等。
- 属性 = 关键字/值对:关键字必须是
AttributedCharacterIterator.Attribute类型,值可为任意对象或 null;特殊关键字要求特殊类型的值。 - 一个字符位置可关联多个不同关键字的属性;每个关键字只对应一个值。
属性场(Attribute Field)
- 场 = 属性值保持不变的最大文本范围。
getRunStart(Attribute)/getRunLimit(Attribute)系列方法:返回当前字符所在属性场的起点/终点下标(基于 0 的字符位置)。- 多重载形式:针对全部属性、单个属性关键字、属性关键字集合三种粒度。关键字集合形式返回”所有属性都未改变”的最大文本范围。
可行动点
- 做富文本编辑器/语法加亮/输入法候选串渲染时,用 AttributedString + AttributedCharacterIterator 携带样式信息,而非并行维护多个区间表。
- 遍历模式:
first(); while (current != DONE) { getRunLimit(...); setIndex(...) }按属性场跳跃式推进,避免逐字符判断样式变化。
关联
- chap05-SQL实践-数据库设计与实践(同批田浩然 Java/数据库资料)
- Java2 类库解析系列其他章节(云盘同目录其他分片 PDF)