All Downloads are FREE. Search and download functionalities are using the official Maven repository.

net.anotheria.util.StringPattern Maven / Gradle / Ivy

There is a newer version: 4.0.0
Show newest version
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