Package io.toro.martini.util
Class StringMatcher
- java.lang.Object
-
- io.toro.martini.util.StringMatcher
-
public final class StringMatcher extends Object
Based on org.eclipse.ui.internal.misc.StringMatcher.
-
-
Nested Class Summary
Nested Classes Modifier and Type Class Description static classStringMatcher.Position
-
Field Summary
Fields Modifier and Type Field Description protected intboundprotected booleanhasLeadingStarprotected booleanhasTrailingStarprotected booleanignoreCaseprotected booleanignoreWildCardsprotected intlengthprotected Stringpatternprotected String[]segmentsprotected static charsingleWildCard
-
Constructor Summary
Constructors Constructor Description StringMatcher(String pattern, boolean ignoreCase, boolean ignoreWildCards)StringMatcher constructor takes in a String object that is a simple pattern which may contain '*' for 0 and many characters and '?' for exactly one character.
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Modifier and Type Method Description StringMatcher.Positionfind(String text, int start, int end)Find the first occurrence of the pattern betweenstartend(exclusive).static Predicate<String>fuzzy(String query)booleanmatch(String text)match the giventextwith the patternbooleanmatch(String text, int start, int end)Given the starting (inclusive) and the ending (exclusive) positions in thetext, determine if the given substring matches with aPatternprotected intposIn(String text, int start, int end)protected intregExpPosIn(String text, int start, int end, String p)protected booleanregExpRegionMatches(String text, int tstart, String p, int pstart, int len)protected inttextPosIn(String text, int start, int end, String p)
-
-
-
Field Detail
-
pattern
protected String pattern
-
length
protected int length
-
ignoreWildCards
protected boolean ignoreWildCards
-
ignoreCase
protected boolean ignoreCase
-
hasLeadingStar
protected boolean hasLeadingStar
-
hasTrailingStar
protected boolean hasTrailingStar
-
segments
protected String[] segments
-
bound
protected int bound
-
singleWildCard
protected static final char singleWildCard
- See Also:
- Constant Field Values
-
-
Constructor Detail
-
StringMatcher
public StringMatcher(String pattern, boolean ignoreCase, boolean ignoreWildCards)
StringMatcher constructor takes in a String object that is a simple pattern which may contain '*' for 0 and many characters and '?' for exactly one character. Literal '*' and '?' characters must be escaped in the pattern e.g., "\*" means literal "*", etc. Escaping any other character (including the escape character itself), just results in that character in the pattern. e.g., "\a" means "a" and "\\" means "\" If invoking the StringMatcher with string literals in Java, don't forget escape characters are represented by "\\".- Parameters:
pattern- the pattern to match text againstignoreCase- if true, case is ignoredignoreWildCards- if true, wild cards and their escape sequences are ignored (everything is taken literally).
-
-
Method Detail
-
fuzzy
public static Predicate<String> fuzzy(String query)
- Parameters:
query- a raw query- Returns:
- a fuzzy matcher
-
find
public StringMatcher.Position find(String text, int start, int end)
Find the first occurrence of the pattern betweenstartend(exclusive).- Parameters:
text- the String object to search instart- the starting index of the search range, inclusiveend- the ending index of the search range, exclusive- Returns:
- an
StringMatcher.Positionobject that keeps the starting (inclusive) and ending positions (exclusive) of the first occurrence of the pattern in the specified range of the text; return null if not found or subtext is empty (start==end). A pair of zeros is returned if pattern is empty string Note that for pattern like "*abc*" with leading and trailing stars, position of "abc" is returned. For a pattern like"*??*" in text "abcdf", (1,3) is returned
-
match
public boolean match(String text)
match the giventextwith the pattern- Parameters:
text- a String object- Returns:
- true if matched otherwise false
-
match
public boolean match(String text, int start, int end)
Given the starting (inclusive) and the ending (exclusive) positions in thetext, determine if the given substring matches with aPattern- Parameters:
text- a String object that contains the substring to matchstart- marks the starting position (inclusive) of the substringend- marks the ending index (exclusive) of the substring- Returns:
- true if the specified portion of the text matches the pattern
-
posIn
protected int posIn(String text, int start, int end)
- Parameters:
text- a string which contains no wildcardstart- the starting index in the text for search, inclusiveend- the stopping point of search, exclusive- Returns:
- the starting index in the text of the pattern , or -1 if not found
-
regExpPosIn
protected int regExpPosIn(String text, int start, int end, String p)
- Parameters:
text- a simple regular expression that may only contain '?'(s)start- the starting index in the text for search, inclusiveend- the stopping point of search, exclusivep- a simple regular expression that may contains '?'- Returns:
- the starting index in the text of the pattern , or -1 if not found
-
regExpRegionMatches
protected boolean regExpRegionMatches(String text, int tstart, String p, int pstart, int len)
- Parameters:
text- a String to matchpstart- int that indicates the starting index of match, inclusiveend- int that indicates the ending index of match, exclusivep- String, String, a simple regular expression that may contain '?'ignoreCase- boolean indicating wether code>p is case sensitive- Returns:
- boolean
-
textPosIn
protected int textPosIn(String text, int start, int end, String p)
- Parameters:
text- the string to matchstart- the starting index in the text for search, inclusiveend- the stopping point of search, exclusivep- a pattern string that has no wildcard- Returns:
- the starting index in the text of the pattern , or -1 if not found
-
-