Most visited

Recently visited

Added in API level 24

StringSearch

public final class StringSearch
extends SearchIterator

java.lang.Object
   ↳ android.icu.text.SearchIterator
     ↳ android.icu.text.StringSearch


StringSearch是一个SearchIterator ,它根据RuleBasedCollator对象中定义的比较规则提供对语言敏感的文本搜索。 StringSearch确保可以处理语言偏心,例如对于德语整理者来说,如果选择被忽略的情况,字符和SS将匹配。 有关更多信息,请参阅"ICU Collation Design Document"

有两种匹配选项可供选择:
令S'为偏移量开始和结束[开始,结束]之间的文本串S的子串。
模式字符串P匹配偏移量[开始,结束] if处的文本字符串S.

 
 option 1. Some canonical equivalent of P matches some canonical equivalent
           of S'
 option 2. P matches S' and if P starts or ends with a combining mark,
           there exists no non-ignorable combining mark before or after S?
           in S respectively.
 
Option 2. is the default.

此搜索的API与其他文本迭代机制(如BreakIterator的中断迭代器) BreakIterator 使用这些API可以很容易地扫描文本,查找给定模式的所有事件。 此搜索迭代器允许通过调用reset()后跟next()previous()来更改方向。 尽管可以在不致电reset()情况下改变方向,但这种操作会带来一些速度上的损失。 正向匹配结果将按相反顺序匹配反向结果匹配

SearchIterator提供API来指定文本字符串中的起始位置进行搜索,比如setIndexprecedingfollowing 由于起始位置将按照规定进行设置,请注意,有些危险点可能导致搜索结果不正确:

如果只希望在逻辑中断处匹配,则可以使用BreakIterator 使用BreakIterator只会为您提供与BreakIterator给出的边界完全匹配的结果。 例如,如果使用字符中断迭代器,则字符串“Ô中将不会找到模式“e”。

提供选项来处理重叠匹配。 例如,在英语中,重叠匹配为文本“ababab”中的模式“abab”生成结果0和2,其中相互排斥的匹配仅产生0的结果。

还提供了选项,以实现 UTS #10 Unicode Collation Algorithm中所述的“非对称搜索”,特别是ElementComparisonType值。

虽然在执行匹配时会考虑到collator属性,但在这里没有用于设置和获取属性的API。 这些属性可以通过从getCollator()获取整理器并使用getCollator()中的API来RuleBasedCollator 最后要将StringSearch更新为新的reset()属性,必须调用reset()

限制:
目前,没有组合字符由组合类> 0的字符与组合类== 0之前的字符组成。但是,如果将来存在此类字符,则StringSearch不保证选项1的结果。

请参阅 SearchIterator文档以获取有关如何使用此类实例来实现文本搜索的信息和示例。

请注意, StringSearch不会被分类。

也可以看看:

Summary

Inherited constants

From class android.icu.text.SearchIterator

Inherited fields

From class android.icu.text.SearchIterator

Public constructors

StringSearch(String pattern, CharacterIterator target, RuleBasedCollator collator, BreakIterator breakiter)

初始化迭代器以使用参数整理器中定义的语言特定规则来搜索参数目标文本中的参数模式。

StringSearch(String pattern, CharacterIterator target, RuleBasedCollator collator)

初始化迭代器以使用参数整理器中定义的语言特定规则来搜索参数目标文本中的参数模式。

StringSearch(String pattern, CharacterIterator target, Locale locale)

初始化迭代器以使用特定于语言的规则并中断在参数区域设置中定义的迭代器规则,以在参数目标文本中搜索参数模式。

StringSearch(String pattern, CharacterIterator target, ULocale locale)

初始化迭代器以使用特定于语言的规则并中断在参数区域设置中定义的迭代器规则,以在参数目标文本中搜索参数模式。

StringSearch(String pattern, String target)

初始化迭代器以使用特定于语言的规则并中断默认区域设置中定义的迭代器规则,以在参数目标文本中搜索参数模式。

Public methods

RuleBasedCollator getCollator()

获取用于语言规则的 RuleBasedCollator

int getIndex()

返回正在搜索的文本中的当前索引。

String getPattern()

返回 StringSearch正在搜索的模式。

boolean isCanonical()

确定是否设置了规范匹配(选项1,如类文档中所述)。

void reset()

重置迭代。

void setCanonical(boolean allowCanonical)

设置规范匹配模式。

void setCollator(RuleBasedCollator collator)

RuleBasedCollator设置为用于语言特定的搜索。

void setIndex(int position)

设置下一次搜索将开始的目标文本中的位置。

void setPattern(String pattern)

设置要搜索的模式。

void setTarget(CharacterIterator text)

设置要搜索的目标文本。

Protected methods

int handleNext(int position)

子类重写的抽象方法,提供在目标文本中查找下一个匹配的机制。

int handlePrevious(int position)

抽象方法,它重写子类以提供在目标文本中查找先前匹配的机制。

Inherited methods

From class android.icu.text.SearchIterator
From class java.lang.Object

Public constructors

StringSearch

Added in API level 24
StringSearch (String pattern, 
                CharacterIterator target, 
                RuleBasedCollator collator, 
                BreakIterator breakiter)

初始化迭代器以使用参数整理器中定义的语言特定规则来搜索参数目标文本中的参数模式。 参数breakiter用于定义逻辑匹配。 有关使用目标文本和BreakIterator更多详细信息,请参阅超类文档。

Parameters
pattern String: text to look for.
target CharacterIterator: target text to search for pattern.
collator RuleBasedCollator: RuleBasedCollator that defines the language rules
breakiter 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

也可以看看:

StringSearch

Added in API level 24
StringSearch (String pattern, 
                CharacterIterator target, 
                RuleBasedCollator collator)

初始化迭代器以使用参数整理器中定义的语言特定规则来搜索参数目标文本中的参数模式。 没有BreakIterator被设置为测试逻辑匹配。

Parameters
pattern String: text to look for.
target CharacterIterator: target text to search for pattern.
collator RuleBasedCollator: RuleBasedCollator that defines the language rules
Throws
IllegalArgumentException thrown when argument target is null, or of length 0

也可以看看:

StringSearch

Added in API level 24
StringSearch (String pattern, 
                CharacterIterator target, 
                Locale locale)

初始化迭代器以使用特定于语言的规则并中断在参数区域设置中定义的迭代器规则,以在参数目标文本中搜索参数模式。

Parameters
pattern String: text to look for.
target CharacterIterator: target text to search for pattern.
locale Locale: locale to use for language and break iterator rules
Throws
IllegalArgumentException thrown when argument target is null, or of length 0. ClassCastException thrown if the collator for the specified locale is not a RuleBasedCollator.

StringSearch

Added in API level 24
StringSearch (String pattern, 
                CharacterIterator target, 
                ULocale locale)

初始化迭代器以使用特定于语言的规则并中断在参数区域设置中定义的迭代器规则,以在参数目标文本中搜索参数模式。 有关使用目标文本和BreakIterator更多详细信息,请参阅超类文档。

Parameters
pattern String: text to look for.
target CharacterIterator: target text to search for pattern.
locale ULocale: locale to use for language and break iterator rules
Throws
IllegalArgumentException thrown when argument target is null, or of length 0. ClassCastException thrown if the collator for the specified locale is not a RuleBasedCollator.

也可以看看:

StringSearch

Added in API level 24
StringSearch (String pattern, 
                String target)

初始化迭代器以使用特定于语言的规则并中断默认区域设置中定义的迭代器规则,以在参数目标文本中搜索参数模式。

Parameters
pattern String: text to look for.
target String: target text to search for pattern.
Throws
IllegalArgumentException thrown when argument target is null, or of length 0. ClassCastException thrown if the collator for the default locale is not a RuleBasedCollator.

Public methods

getCollator

Added in API level 24
RuleBasedCollator getCollator ()

获取用于语言规则的 RuleBasedCollator

由于 StringSearch取决于返回的 RuleBasedCollator ,因此对 RuleBasedCollator结果的任何更改都应随后调用 reset()setCollator(RuleBasedCollator)以确保正确的搜索行为。

Returns
RuleBasedCollator RuleBasedCollator used by this StringSearch

也可以看看:

getIndex

Added in API level 24
int getIndex ()

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

Returns
int current index in the text being searched.

getPattern

Added in API level 24
String getPattern ()

返回 StringSearch正在搜索的模式。

Returns
String the pattern searched for

isCanonical

Added in API level 24
boolean isCanonical ()

确定是否设置了规范匹配(选项1,如类文档中所述)。 有关更多信息,请参阅setCanonical(boolean)。

Returns
boolean true if canonical matches is set, false otherwise

也可以看看:

reset

Added in API level 24
void reset ()

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

setCanonical

Added in API level 24
void setCanonical (boolean allowCanonical)

设置规范匹配模式。 详情请参阅班级文件。 此属性的默认设置为false。

Parameters
allowCanonical boolean: flag indicator if canonical matches are allowed

也可以看看:

setCollator

Added in API level 24
void setCollator (RuleBasedCollator collator)

设置 RuleBasedCollator用于语言特定的搜索。

迭代器的位置不会被这个方法改变。

Parameters
collator RuleBasedCollator: to use for this StringSearch
Throws
IllegalArgumentException thrown when collator is null

也可以看看:

setIndex

Added in API level 24
void setIndex (int position)

设置下一次搜索将开始的目标文本中的位置。 此方法清除任何以前的匹配。

Parameters
position int: position from which to start the next search

setPattern

Added in API level 24
void setPattern (String pattern)

设置要搜索的模式。 迭代器的位置不会被这个方法改变。

Parameters
pattern String: for searching
Throws
IllegalArgumentException thrown if pattern is null or of length 0

也可以看看:

setTarget

Added in API level 24
void setTarget (CharacterIterator text)

设置要搜索的目标文本。 文本迭代将在文本字符串的开始处开始。 如果您想重复使用迭代器在不同的文本内搜索,此方法非常有用。

Parameters
text CharacterIterator: new text iterator to look for match,

Protected methods

handleNext

Added in API level 24
int handleNext (int position)

子类重写的抽象方法,提供在目标文本中查找下一个匹配的机制。 这允许不同的子类提供不同的搜索算法。

如果找到匹配项,则实现应该返回匹配开始的索引,并且应该使用构成匹配的目标文本中的字符数来调用setMatchLength(int) 如果找不到匹配项,则该方法应返回DONE

Parameters
position 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 position)

抽象方法,它重写子类以提供在目标文本中查找先前匹配的机制。 这允许不同的子类提供不同的搜索算法。

如果找到匹配项,则实现应返回匹配开始时的索引,并应使用构成匹配的目标文本中的字符数调用setMatchLength(int) 如果未找到匹配项,则该方法应返回DONE

Parameters
position 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

Hooray!