
net.anotheria.util.StringPattern Maven / Gradle / Ivy
package net.anotheria.util;
import java.util.ArrayList;
import java.util.Collection;
import java.util.List;
/**
* StringPattern class.
*
* @author another
* @version $Id: $Id
*/
public class StringPattern {
/** Constant DEFAULT_WILDCARD='*'
*/
public static final char DEFAULT_WILDCARD = '*';
private char wildCard;
private String equals;
private String startsWith;
private String endsWith;
private List indexof;
/**
* Constructor for StringPattern.
*
* @param pattern a {@link java.lang.String} object.
*/
public StringPattern(String pattern) {
this(pattern, DEFAULT_WILDCARD);
}
/**
* Constructor for StringPattern.
*
* @param pattern a {@link java.lang.String} object.
* @param wildCard a char.
*/
public StringPattern(String pattern, char wildCard) {
this.wildCard = wildCard;
List wildCards = searchWildcards(pattern);
if(wildCards.isEmpty()) {
equals = pattern;
return;
}
if(wildCards.get(0) > 0) {
startsWith = pattern.substring(0, wildCards.get(0));
}
if(wildCards.get(wildCards.size()-1) < pattern.length() -1) {
endsWith = pattern.substring(wildCards.get(wildCards.size()-1)+1);
}
if(wildCards.size() == 1) {
return;
}
indexof = new ArrayList<>();
for(int i=0; i searchWildcards(CharSequence pattern) {
List result = new ArrayList<>();
for(int i=0; imatch.
*
* @param aString a {@link java.lang.String} object.
* @return a boolean.
*/
public boolean match(String aString) {
return match(aString, new ArrayList());
}
/**
* match.
*
* @param aString a {@link java.lang.String} object.
* @param matches a {@link java.util.Collection} object.
* @return a boolean.
*/
public boolean match(String aString, Collection matches) {
if(equals != null) {
return aString.equals(equals);
}
int leftMatch = 0;
int rightMatch = aString.length();
if(startsWith != null) {
if(aString.startsWith(startsWith)) {
leftMatch = startsWith.length();
} else {
return false;
}
}
if(endsWith != null) {
if(aString.endsWith(endsWith)) {
rightMatch = aString.length() - endsWith.length();
} else {
return false;
}
}
if(indexof != null) {
int lastIndex = 0;
for(String io: indexof) {
int index = aString.indexOf(io, lastIndex);
if(index == -1) {
return false;
}
if(matches != null) {
matches.add(aString.substring(leftMatch, index));
leftMatch = index + io.length();
}
lastIndex = index;
}
}
matches.add(aString.substring(leftMatch, rightMatch));
return true;
}
/**
* toString.
*
* @return a {@link java.lang.String} object.
*/
public String toString() {
StringBuilder result = new StringBuilder();
if(equals != null) {
result.append("equals=").append(equals);
}
if(startsWith != null) {
result.append(", startsWith=").append(startsWith);
}
if(indexof != null) {
for(String io: indexof) {
result.append(", indexof=").append(io);
}
}
if(endsWith != null) {
result.append(", endsWith=").append(endsWith);
}
return result.toString();
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy