Most visited

Recently visited

Added in API level 24

SearchIterator

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());
 }
 

也可以看看:

Summary

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()

返回由最近一次调用匹配文本 first()next()previous() ,或 last()

CharacterIterator getTarget()

返回要搜索的字符串文本。

boolean isOverlapping()

如果重叠属性已设置,则返回true。

final int last()

返回目标文本中与搜索模式匹配的最后一个索引。

int next()

从当前位置开始,返回文本与搜索模式匹配的下一个点的索引迭代器将进行调整,以使其当前索引(如 getIndex()所返回的 getIndex() )为匹配位置(如果找到该索引位置)。

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

Constants

DONE

Added in API level 24
int DONE

在返回所有有效的匹配之后,DONE由previous()和next()返回,如果根本没有匹配,则由first()和last()返回。

也可以看看:

常量值:-1(0xffffffff)

Fields

breakIterator

Added in API level 24
BreakIterator breakIterator

BreakIterator来定义逻辑匹配的边界。 该值可以为空。 请参阅班级文档了解更多信息。

也可以看看:

matchLength

Added in API level 24
int matchLength

目标文本中最新匹配的长度。 值0是默认值。

也可以看看:

targetText

Added in API level 24
CharacterIterator targetText

搜索目标文本。

也可以看看:

Protected constructors

SearchIterator

Added in API level 24
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

也可以看看:

Public methods

first

Added in API level 24
int first ()

返回字符串文本与搜索模式匹配的第一个索引。 迭代器被调整,使得它的当前索引(如getIndex()所返回的)是匹配位置,如果找到了。 如果找不到匹配项,则返回DONE ,迭代器将调整为索引DONE

Returns
int The character index of the first match, or DONE if there are no matches.

也可以看看:

following

Added in API level 24
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.

也可以看看:

getBreakIterator

Added in API level 24
BreakIterator getBreakIterator ()

返回用于限制检测到匹配的索引的BreakIterator。 这将是传递给构造函数或setBreakIterator(BreakIterator)的相同对象。 如果BreakIterator尚未设置,则返回null 有关更多信息,请参阅setBreakIterator(BreakIterator)

Returns
BreakIterator the BreakIterator set to restrict logic matches

也可以看看:

getElementComparisonType

Added in API level 24
SearchIterator.ElementComparisonType getElementComparisonType ()

返回排序规则元素比较类型。

Returns
SearchIterator.ElementComparisonType

也可以看看:

getIndex

Added in API level 24
int getIndex ()

返回正在搜索的文本中的当前索引。 如果迭代已经超过了文本的结尾(或者向后搜索超过了开头),则返回DONE

Returns
int current index in the text being searched.

getMatchLength

Added in API level 24
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.

也可以看看:

getMatchStart

Added in API level 24
int getMatchStart ()

返回搜索到的文本字符串中匹配的索引。 此调用后,才成功调用返回一个有效的结果first()next()previous() ,或last() 施工后或搜索方法返回DONE ,此方法将返回DONE

使用 getMatchLength()获取匹配的字符串长度。

Returns
int index of a substring within the text string that is being searched.

也可以看看:

getMatchedText

Added in API level 24
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.

也可以看看:

getTarget

Added in API level 24
CharacterIterator getTarget ()

返回要搜索的字符串文本。

Returns
CharacterIterator text string to be searched.

isOverlapping

Added in API level 24
boolean isOverlapping ()

如果重叠属性已设置,则返回true。 有关更多信息,请参阅setOverlapping(boolean)

Returns
boolean true if the overlapping property has been set, false otherwise

也可以看看:

last

Added in API level 24
int last ()

返回目标文本中与搜索模式匹配的最后一个索引。 迭代器被调整,以便它的当前索引(如getIndex()所返回的)是匹配位置,如果找到的话。 如果未找到匹配项,则返回DONE ,并将迭代器调整为索引DONE

Returns
int The index of the first match, or DONE if there are no matches.

也可以看看:

next

Added in API level 24
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.

也可以看看:

preceding

Added in API level 24
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

也可以看看:

previous

Added in API level 24
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.

也可以看看:

reset

Added in API level 24
void reset ()

重置迭代。 如果在向后迭代之前启动了前向迭代,搜索将从文本字符串的开始处开始。 否则,如果在向前迭代之前启动向后迭代,则搜索将从文本字符串的末尾开始。

setBreakIterator

Added in API level 24
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.

也可以看看:

setElementComparisonType

Added in API level 24
void setElementComparisonType (SearchIterator.ElementComparisonType type)

设置排序规则元素比较类型。

默认比较类型是 STANDARD_ELEMENT_COMPARISON

Parameters
type SearchIterator.ElementComparisonType

也可以看看:

setIndex

Added in API level 24
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.

也可以看看:

setOverlapping

Added in API level 24
void setOverlapping (boolean allowOverlap)

确定是否返回重叠匹配。 有关重叠匹配的更多信息,请参阅班级文档。

此属性的默认设置为false

Parameters
allowOverlap boolean: flag indicator if overlapping matches are allowed

也可以看看:

setTarget

Added in API level 24
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

也可以看看:

Protected methods

handleNext

Added in API level 24
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

也可以看看:

handlePrevious

Added in API level 24
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

也可以看看:

setMatchLength

Added in API level 24
void setMatchLength (int length)

设置目标文本中最近一次匹配的长度。 子类'handleNext()和handlePrevious()方法应该在目标文本中找到匹配项后调用它。

Parameters
length int: new length to set

也可以看看:

Hooray!