public abstract class SearchIterator
extends Object
java.lang.Object | |
↳ | android.icu.text.SearchIterator |
Known Direct Subclasses |
SearchIterator是一个抽象基类,它提供了在文本字符串中搜索模式的方法。 SearchIterator的实例保持当前位置并扫描目标文本,返回模式匹配的索引和每个匹配的长度。
SearchIterator定义了用于文本搜索的协议。 子类提供各种搜索算法的具体实现。 例如, StringSearch根据RuleBasedCollator对象中定义的比较规则实现了语言敏感的模式匹配。
其他搜索选项包括使用BreakIterator来限制检测到匹配的点。
SearchIterator提供了一个类似于其他文本迭代类(如BreakIterator)的API 。 使用这个类,很容易扫描文本,查找给定模式的所有事件。 以下示例使用StringSearch对象在目标字符串中查找“fox”的所有实例。 任何其他SearchIterator的子类都可以以相同的方式使用。
String target = "The quick brown fox jumped over the lazy fox";
String pattern = "fox";
SearchIterator iter = new StringSearch(pattern, target);
for (int pos = iter.first(); pos != SearchIterator.DONE;
pos = iter.next()) {
System.out.println("Found match at " + pos +
", length is " + iter.getMatchLength());
}
也可以看看:
Nested classes |
|
---|---|
枚举 |
SearchIterator.ElementComparisonType 控制比较元素比较方式的选项。 |
Constants |
|
---|---|
int |
DONE 在返回所有有效的匹配之后,DONE由previous()和next()返回,如果根本没有匹配,则由first()和last()返回。 |
Fields |
|
---|---|
protected BreakIterator |
breakIterator BreakIterator来定义逻辑匹配的边界。 |
protected int |
matchLength 目标文本中最新匹配的长度。 |
protected CharacterIterator |
targetText 搜索目标文本。 |
Protected constructors |
|
---|---|
SearchIterator(CharacterIterator target, BreakIterator breaker) 受保护的构造函数供子类使用。 |
Public methods |
|
---|---|
final int |
first() 返回字符串文本与搜索模式匹配的第一个索引。 |
final int |
following(int position) 返回等于或大于 position的第一个索引,其中字符串文本与搜索模式匹配。 |
BreakIterator |
getBreakIterator() 返回用于限制检测到匹配的索引的BreakIterator。 |
SearchIterator.ElementComparisonType |
getElementComparisonType() 返回排序规则元素比较类型。 |
abstract int |
getIndex() 返回正在搜索的文本中的当前索引。 |
int |
getMatchLength() 返回匹配搜索模式的字符串中的文本长度。 |
int |
getMatchStart() 返回搜索到的文本字符串中匹配的索引。 |
String |
getMatchedText() 返回由最近一次调用匹配文本 |
CharacterIterator |
getTarget() 返回要搜索的字符串文本。 |
boolean |
isOverlapping() 如果重叠属性已设置,则返回true。 |
final int |
last() 返回目标文本中与搜索模式匹配的最后一个索引。 |
int |
next() 从当前位置开始,返回文本与搜索模式匹配的下一个点的索引迭代器将进行调整,以使其当前索引(如 |
final int |
preceding(int position) 返回小于 position的第一个索引,其中字符串文本与搜索模式匹配。 |
int |
previous() 从当前位置开始,返回字符串文本与搜索模式匹配的前一个点的索引。 |
void |
reset() 重置迭代。 |
void |
setBreakIterator(BreakIterator breakiter) 设置将用于限制检测到匹配点的BreakIterator。 |
void |
setElementComparisonType(SearchIterator.ElementComparisonType type) 设置排序规则元素比较类型。 |
void |
setIndex(int position) 设置下一次搜索将开始的目标文本中的位置。 |
void |
setOverlapping(boolean allowOverlap) 确定是否返回重叠匹配。 |
void |
setTarget(CharacterIterator text) 设置要搜索的目标文本。 |
Protected methods |
|
---|---|
abstract int |
handleNext(int start) 子类重写的抽象方法,提供在目标文本中查找下一个匹配的机制。 |
abstract int |
handlePrevious(int startAt) 抽象方法,它重写子类以提供在目标文本中查找先前匹配的机制。 |
void |
setMatchLength(int length) 设置目标文本中最近一次匹配的长度。 |
Inherited methods |
|
---|---|
From class java.lang.Object
|
int DONE
在返回所有有效的匹配之后,DONE由previous()和next()返回,如果根本没有匹配,则由first()和last()返回。
也可以看看:
常量值:-1(0xffffffff)
BreakIterator breakIterator
BreakIterator来定义逻辑匹配的边界。 该值可以为空。 请参阅班级文档了解更多信息。
SearchIterator (CharacterIterator target, BreakIterator breaker)
受保护的构造函数供子类使用。 使用参数目标文本初始化迭代器以进行搜索并设置BreakIterator。 有关使用目标文本和BreakIterator
更多详细信息,请参阅班级文档。
Parameters | |
---|---|
target |
CharacterIterator : The target text to be searched. |
breaker |
BreakIterator : A BreakIterator that is used to determine the boundaries of a logical match. This argument can be null. |
Throws | |
---|---|
IllegalArgumentException |
thrown when argument target is null, or of length 0 |
也可以看看:
int first ()
返回字符串文本与搜索模式匹配的第一个索引。 迭代器被调整,使得它的当前索引(如getIndex()
所返回的)是匹配位置,如果找到了。 如果找不到匹配项,则返回DONE
,迭代器将调整为索引DONE
。
Returns | |
---|---|
int |
The character index of the first match, or DONE if there are no matches. |
也可以看看:
int following (int position)
返回等于或大于position的第一个索引,其中字符串文本与搜索模式匹配。 迭代器被调整,使得它的当前索引(如getIndex()
所返回的)是匹配位置,如果找到了。 如果找不到匹配项,则返回DONE
,迭代器将调整为索引DONE
。
Parameters | |
---|---|
position |
int : where search if to start from. |
Returns | |
---|---|
int |
The character index of the first match following position, or DONE if there are no matches. |
Throws | |
---|---|
IndexOutOfBoundsException |
If position is less than or greater than the text range for searching. |
也可以看看:
BreakIterator getBreakIterator ()
返回用于限制检测到匹配的索引的BreakIterator。 这将是传递给构造函数或setBreakIterator(BreakIterator)
的相同对象。 如果BreakIterator
尚未设置,则返回null 。 有关更多信息,请参阅setBreakIterator(BreakIterator)
。
Returns | |
---|---|
BreakIterator |
the BreakIterator set to restrict logic matches |
SearchIterator.ElementComparisonType getElementComparisonType ()
返回排序规则元素比较类型。
Returns | |
---|---|
SearchIterator.ElementComparisonType |
int getIndex ()
返回正在搜索的文本中的当前索引。 如果迭代已经超过了文本的结尾(或者向后搜索超过了开头),则返回DONE
。
Returns | |
---|---|
int |
current index in the text being searched. |
int getMatchLength ()
返回匹配搜索模式的字符串中的文本长度。 此调用后,才成功调用返回一个有效的结果first()
, next()
, previous()
,或last()
。 施工结束后,或者在搜索方法返回DONE
,此方法将返回0。
Returns | |
---|---|
int |
The length of the match in the target text, or 0 if there is no match currently. |
也可以看看:
int getMatchStart ()
返回搜索到的文本字符串中匹配的索引。 此调用后,才成功调用返回一个有效的结果first()
, next()
, previous()
,或last()
。 施工后或搜索方法返回DONE
,此方法将返回DONE
。
使用 getMatchLength()
获取匹配的字符串长度。
Returns | |
---|---|
int |
index of a substring within the text string that is being searched. |
也可以看看:
String getMatchedText ()
返回由最近一次调用匹配文本first()
, next()
, previous()
,或last()
。 如果迭代器没有指向一个有效的匹配(例如刚DONE
之后或返回DONE
之后,则返回一个空字符串。
Returns | |
---|---|
String |
the substring in the target test of the most recent match, or null if there is no match currently. |
也可以看看:
CharacterIterator getTarget ()
返回要搜索的字符串文本。
Returns | |
---|---|
CharacterIterator |
text string to be searched. |
boolean isOverlapping ()
如果重叠属性已设置,则返回true。 有关更多信息,请参阅setOverlapping(boolean)
。
Returns | |
---|---|
boolean |
true if the overlapping property has been set, false otherwise |
也可以看看:
int last ()
返回目标文本中与搜索模式匹配的最后一个索引。 迭代器被调整,以便它的当前索引(如getIndex()
所返回的)是匹配位置,如果找到的话。 如果未找到匹配项,则返回DONE
,并将迭代器调整为索引DONE
。
Returns | |
---|---|
int |
The index of the first match, or DONE if there are no matches. |
也可以看看:
int next ()
从当前位置开始,返回文本与搜索模式匹配的下一个点的索引。迭代器将进行调整,以使其当前索引(如getIndex()
所返回的getIndex()
)是匹配位置(如果找到一个索引位置)。 如果找不到匹配项, DONE
将被返回,迭代器将被调整到文本字符串结束后的位置。
Returns | |
---|---|
int |
The index of the next match after the current position, or DONE if there are no more matches. |
也可以看看:
int preceding (int position)
返回小于position的第一个索引,其中字符串文本与搜索模式匹配。 迭代器被调整,使得它的当前索引(如getIndex()
所返回的)是匹配位置(如果找到了)。 如果找不到匹配项,则返回DONE
,迭代器将调整为索引DONE
当重叠选项( isOverlapping()
)关闭时,结果匹配的最后一个索引始终小于position 。 重叠选项打开时,结果匹配可能会跨越position 。
Parameters | |
---|---|
position |
int : where search is to start from. |
Returns | |
---|---|
int |
The character index of the first match preceding position, or DONE if there are no matches. |
Throws | |
---|---|
IndexOutOfBoundsException |
If position is less than or greater than the text range for searching |
也可以看看:
int previous ()
从当前位置开始,返回字符串文本与搜索模式匹配的前一个点的索引。 迭代器被调整,以便其当前索引(如getIndex()
所返回的)是匹配位置(如果找到)。 如果找不到匹配项, DONE
将被返回并且迭代器将被调整到索引DONE
。
Returns | |
---|---|
int |
The index of the previous match before the current position, or DONE if there are no more matches. |
也可以看看:
void reset ()
重置迭代。 如果在向后迭代之前启动了前向迭代,搜索将从文本字符串的开始处开始。 否则,如果在向前迭代之前启动向后迭代,则搜索将从文本字符串的末尾开始。
void setBreakIterator (BreakIterator breakiter)
设置将用于限制检测到匹配点的BreakIterator。
Parameters | |
---|---|
breakiter |
BreakIterator : A BreakIterator that will be used to restrict the points at which matches are detected. If a match is found, but the match's start or end index is not a boundary as determined by the BreakIterator , the match will be rejected and another will be searched for. If this parameter is null, no break detection is attempted. |
也可以看看:
void setElementComparisonType (SearchIterator.ElementComparisonType type)
设置排序规则元素比较类型。
默认比较类型是 STANDARD_ELEMENT_COMPARISON
。
Parameters | |
---|---|
type |
SearchIterator.ElementComparisonType
|
void setIndex (int position)
设置下一次搜索将开始的目标文本中的位置。 此方法清除任何以前的匹配。
Parameters | |
---|---|
position |
int : position from which to start the next search |
Throws | |
---|---|
IndexOutOfBoundsException |
thrown if argument position is out of the target text range. |
也可以看看:
void setOverlapping (boolean allowOverlap)
确定是否返回重叠匹配。 有关重叠匹配的更多信息,请参阅班级文档。
此属性的默认设置为false
Parameters | |
---|---|
allowOverlap |
boolean : flag indicator if overlapping matches are allowed |
也可以看看:
void setTarget (CharacterIterator text)
设置要搜索的目标文本。 文本迭代将在文本字符串的开始处开始。 如果您想重复使用迭代器在不同的文本内搜索,此方法非常有用。
Parameters | |
---|---|
text |
CharacterIterator : new text iterator to look for match, |
Throws | |
---|---|
IllegalArgumentException |
thrown when text is null or has 0 length |
也可以看看:
int handleNext (int start)
子类重写的抽象方法,提供在目标文本中查找下一个匹配的机制。 这允许不同的子类提供不同的搜索算法。
如果找到匹配项,则实现应返回匹配开始的索引,并应使用构成匹配的目标文本中的字符数调用setMatchLength(int)
。 如果未找到匹配项,则该方法应返回DONE
。
Parameters | |
---|---|
start |
int : The index in the target text at which the search should start. |
Returns | |
---|---|
int |
index at which the match starts, else if match is not found DONE is returned |
也可以看看:
int handlePrevious (int startAt)
抽象方法,它重写子类以提供在目标文本中查找先前匹配的机制。 这允许不同的子类提供不同的搜索算法。
如果找到匹配项,则实现应该返回匹配开始的索引,并且应该使用构成匹配的目标文本中的字符数来调用setMatchLength(int)
。 如果找不到匹配项,则该方法应返回DONE
。
Parameters | |
---|---|
startAt |
int : The index in the target text at which the search should start. |
Returns | |
---|---|
int |
index at which the match starts, else if match is not found DONE is returned |
也可以看看:
void setMatchLength (int length)
设置目标文本中最近一次匹配的长度。 子类'handleNext()和handlePrevious()方法应该在目标文本中找到匹配项后调用它。
Parameters | |
---|---|
length |
int : new length to set |