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来指定文本字符串中的起始位置进行搜索,比如setIndex
, preceding
和following
。 由于起始位置将按照规定进行设置,请注意,有些危险点可能导致搜索结果不正确:
如果只希望在逻辑中断处匹配,则可以使用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不会被分类。
也可以看看:
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() 获取用于语言规则的 |
int |
getIndex() 返回正在搜索的文本中的当前索引。 |
String |
getPattern() 返回 StringSearch正在搜索的模式。 |
boolean |
isCanonical() 确定是否设置了规范匹配(选项1,如类文档中所述)。 |
void |
reset() 重置迭代。 |
void |
setCanonical(boolean allowCanonical) 设置规范匹配模式。 |
void |
setCollator(RuleBasedCollator collator) 将 |
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
|
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 (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 (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 (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 (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. |
RuleBasedCollator getCollator ()
获取用于语言规则的 RuleBasedCollator
。
由于 StringSearch取决于返回的 RuleBasedCollator
,因此对 RuleBasedCollator
结果的任何更改都应随后调用 reset()
或 setCollator(RuleBasedCollator)
以确保正确的搜索行为。
Returns | |
---|---|
RuleBasedCollator |
RuleBasedCollator used by this StringSearch |
int getIndex ()
返回正在搜索的文本中的当前索引。 如果迭代超过了文本的末尾(或者向后搜索超过了开头),则返回DONE
。
Returns | |
---|---|
int |
current index in the text being searched. |
String getPattern ()
返回 StringSearch正在搜索的模式。
Returns | |
---|---|
String |
the pattern searched for |
boolean isCanonical ()
确定是否设置了规范匹配(选项1,如类文档中所述)。 有关更多信息,请参阅setCanonical(boolean)。
Returns | |
---|---|
boolean |
true if canonical matches is set, false otherwise |
也可以看看:
void reset ()
重置迭代。 如果在向后迭代之前启动了前向迭代,搜索将从文本字符串的开始处开始。 否则,如果在向前迭代之前启动向后迭代,则搜索将从文本字符串的末尾开始。
void setCanonical (boolean allowCanonical)
设置规范匹配模式。 详情请参阅班级文件。 此属性的默认设置为false。
Parameters | |
---|---|
allowCanonical |
boolean : flag indicator if canonical matches are allowed |
也可以看看:
void setCollator (RuleBasedCollator collator)
设置 RuleBasedCollator
用于语言特定的搜索。
迭代器的位置不会被这个方法改变。
Parameters | |
---|---|
collator |
RuleBasedCollator : to use for this StringSearch |
Throws | |
---|---|
IllegalArgumentException |
thrown when collator is null |
也可以看看:
void setIndex (int position)
设置下一次搜索将开始的目标文本中的位置。 此方法清除任何以前的匹配。
Parameters | |
---|---|
position |
int : position from which to start the next search |
void setPattern (String pattern)
设置要搜索的模式。 迭代器的位置不会被这个方法改变。
Parameters | |
---|---|
pattern |
String : for searching |
Throws | |
---|---|
IllegalArgumentException |
thrown if pattern is null or of length 0 |
也可以看看:
void setTarget (CharacterIterator text)
设置要搜索的目标文本。 文本迭代将在文本字符串的开始处开始。 如果您想重复使用迭代器在不同的文本内搜索,此方法非常有用。
Parameters | |
---|---|
text |
CharacterIterator : new text iterator to look for match, |
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 |
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 |