package com.avaje.ebeaninternal.server.el; /** * Case insensitive string matching. *
* Provides an alternative to using regular expressions. *
*/ public final class CharMatch { private final char[] upperChars; private final int maxLength; public CharMatch(String s) { this.upperChars = s.toUpperCase().toCharArray(); this.maxLength = upperChars.length; } public boolean startsWith(String other) { if (other == null || other.length() < maxLength){ return false; } char ta[] = other.toCharArray(); int pos = -1; while (++pos < maxLength) { char c1 = upperChars[pos]; char c2 = Character.toUpperCase(ta[pos]); if (c1 != c2) { return false; } } return true; } public boolean endsWith(String other) { if (other == null || other.length() < maxLength){ return false; } char ta[] = other.toCharArray(); int offset = ta.length - maxLength; int pos = maxLength; while (--pos >= 0) { char c1 = upperChars[pos]; char c2 = Character.toUpperCase(ta[offset+pos]); if (c1 != c2) { return false; } } return true; } }