private static final CharMatcher ALNUM = CharMatcher.inRange('a', 'z').or(CharMatcher.inRange('A', 'Z')) .or(CharMatcher.inRange('0', '9')).precomputed(); // ... String alphaAndDigits = ALNUM.retainFrom(input);
CharMatcher matcher = CharMatcher.inRange('a', 'z') .or(CharMatcher.inRange('0', '9')) .or(CharMatcher.anyOf("[]")); String input = "BAD good {} []"; String output = matcher.retainFrom(input);
/** * Convert a string into Jagex username format * Remove all non-ascii characters, replace nbsp with space, replace _- with spaces, and trim * * @param str The string to standardize * @return The given `str` that is in Jagex name format */ public static String toJagexName(String str) { return CharMatcher.ascii().retainFrom(str.replace('\u00A0', ' ')).replaceAll("[_-]+", " ").trim(); }
/** * Jira-style duration parser. Supported duration strings are: <ul> <li>'S': milliseconds</li> <li>'s': seconds</li> * <li>'m': minutes</li> <li>'h': hours</li> <li>'d': days</li> </ul> * <p/> * Durations can be compound statements in any order as long as they are separated by a ',' (comma). Eg. "1d,14h,3s" * to get the millisecond equivalent of one day, fourteen hours and 3 seconds. * <p/> * Numbers with no durations will be treated as raw millisecond values * * @return the number of milliseconds representing the duration */ public static long millisFromDuration( String durationStr ) { long total = 0; MultiplierToken mt; long dur; for ( String val : Splitter.on( ',' ).trimResults().omitEmptyStrings().split( durationStr ) ) { dur = Long.parseLong( CharMatcher.DIGIT.retainFrom( val ) ); mt = MultiplierToken.from( val.charAt( val.length() - 1 ) ); total += ( mt.multiplier * dur ); } return total; }
String asciiChars = CharMatcher.ascii().retainFrom(part);
if (!NOT_WHITESPACE.retainFrom(source).equals(NOT_WHITESPACE.retainFrom(replacement))) { throw new IllegalArgumentException( "source = \"" + source + "\", replacement = \"" + replacement + "\"");
String asciiChars = CharMatcher.ascii().retainFrom(part);
String asciiChars = CharMatcher.ascii().retainFrom(part);
CharMatcher ASCII_DIGITS=CharMatcher.inRange('0','9').precomputed(); ASCII_DIGITS.retainFrom("123-456-789");
CharMatcher desired = CharMatcher.JAVA_DIGIT .or(CharMatcher.JAVA_LETTER) .or(CharMatcher.anyOf("()[]")) .precomputed(); // optional, may improve performance, YMMV return desired.retainFrom(string);
/** * Helper to make a string into a conforming token by stripping away non-token characters. */ @Nullable public static String retainTokenChars(TokenType tokenType, @Nullable CharSequence input) { if (input != null) { String result = tokenType.keyTokenChar.retainFrom(input); checkArgument(input.length() == 0 || !result.isEmpty(), "input contained no token characters: " + input); return result; } else { return null; } }
@Override public boolean processLine(String line) throws IOException { for (String word : Splitter.on(CharMatcher.WHITESPACE).split(line)) { // Discard punctuation, numbers, etc. word = LETTER.retainFrom(word); if (!word.isEmpty()) { spellCheck(word); } } return true; }
public class JapaneseCharMatchers { public static final CharMatcher HIRAGANA = CharMatcher.inRange((char) 0x3040, (char) 0x309f); public static final CharMatcher KATAKANA = CharMatcher.inRange((char) 0x30a0, (char) 0x30ff); public static final CharMatcher KANA = HIRAGANA.or(KATAKANA); public static final CharMatcher KANJI = CharMatcher.inRange((char) 0x4e00, (char) 0x9faf); public static void main(String[] args) { test("誰か確認上記これらのフ"); } private static void test(String string) { System.out.println(string); System.out.println("Hiragana: " + HIRAGANA.retainFrom(string)); System.out.println("Katakana: " + KATAKANA.retainFrom(string)); System.out.println("Kana: " + KANA.retainFrom(string)); System.out.println("Kanji: " + KANJI.retainFrom(string)); } }
String asciiChars = CharMatcher.ASCII.retainFrom(part);
String asciiChars = CharMatcher.ASCII.retainFrom(part);
if (!NOT_WHITESPACE.retainFrom(source).equals(NOT_WHITESPACE.retainFrom(replacement))) { throw new IllegalArgumentException( "source = \"" + source + "\", replacement = \"" + replacement + "\"");
public static String validFileName(final String input) { if (Strings.isNullOrEmpty(input)) { return null; } final String myInput = DOT_PATTERN.matcher(input).replaceAll("-"); return CharMatcher.inRange('a', 'z') .or(CharMatcher.inRange('0', '9')) .or(CharMatcher.inRange('A', 'Z')) .or(CharMatcher.is('_')) .or(CharMatcher.is('-')) .retainFrom(myInput); } }
public static String validFileName(final String input) { if (Strings.isNullOrEmpty(input)) { return null; } final String myInput = DOT_PATTERN.matcher(input).replaceAll("-"); return CharMatcher.inRange('a', 'z') .or(CharMatcher.inRange('0', '9')) .or(CharMatcher.inRange('A', 'Z')) .or(CharMatcher.is('_')) .or(CharMatcher.is('-')) .retainFrom(myInput); } }
public LdapSecurityProvider(ManagementContext mgmt) { StringConfigMap properties = mgmt.getConfig(); ldapUrl = properties.getConfig(BrooklynWebConfig.LDAP_URL); Strings.checkNonEmpty(ldapUrl, "LDAP security provider configuration missing required property "+BrooklynWebConfig.LDAP_URL); ldapRealm = CharMatcher.isNot('"').retainFrom(properties.getConfig(BrooklynWebConfig.LDAP_REALM)); Strings.checkNonEmpty(ldapRealm, "LDAP security provider configuration missing required property "+BrooklynWebConfig.LDAP_REALM); if(Strings.isBlank(properties.getConfig(BrooklynWebConfig.LDAP_OU))) { LOG.info("Setting LDAP ou attribute to: Users"); organizationUnit = "Users"; } else { organizationUnit = CharMatcher.isNot('"').retainFrom(properties.getConfig(BrooklynWebConfig.LDAP_OU)); } Strings.checkNonEmpty(ldapRealm, "LDAP security provider configuration missing required property "+BrooklynWebConfig.LDAP_OU); }
/** * Original string without special symbols like unicode etc * @return StringModifier */ private static StringModifier withoutSpecialSymbols() { return s -> javaLetterOrDigit() .or(WHITESPACE) .or(isNot('.')) .precomputed() .retainFrom(s); }