package io.ebeaninternal.server.el; /** * Case insensitive string matching. * <p> * Provides an alternative to using regular expressions. * </p> */ 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; } }