/** * Replace all characters in the input string with the replacement character. */ public String replaceNonMembers(String input, char replacement) { if (!contains(replacement)) { throw new IllegalArgumentException(replacement + " is not a member of " + pattern); } return containsAll(input) ? input : replaceNonMembersImpl(input, replacement); }
/** * Returns true if all characters in the string are contained within the set. */ public boolean containsAll(CharSequence str) { final int n = str.length(); for (int i = 0; i < n; ++i) { if (!contains(str.charAt(i))) { return false; } } return true; }
/** * Replace all characters in the input string with the replacement character. */ public String replaceNonMembers(String input, char replacement) { if (!contains(replacement)) { throw new IllegalArgumentException(replacement + " is not a member of " + pattern); } return containsAll(input) ? input : replaceNonMembersImpl(input, replacement); }
@Test public void multiRangeContains() { AsciiSet s = AsciiSet.fromPattern("0-2A-C"); Assertions.assertTrue(s.containsAll("012ABC")); Assertions.assertFalse(s.containsAll("3")); Assertions.assertFalse(s.contains('-')); }
/** * Returns true if all characters in the string are contained within the set. */ public boolean containsAll(CharSequence str) { final int n = str.length(); for (int i = 0; i < n; ++i) { if (!contains(str.charAt(i))) { return false; } } return true; }
private String replaceNonMembersImpl(String input, char replacement) { final int n = input.length(); final char[] buf = input.toCharArray(); for (int i = 0; i < n; ++i) { final char c = buf[i]; if (!contains(c)) { buf[i] = replacement; } } return newString(buf); }
private String replaceNonMembersImpl(String input, char replacement) { final int n = input.length(); final char[] buf = input.toCharArray(); for (int i = 0; i < n; ++i) { final char c = buf[i]; if (!contains(c)) { buf[i] = replacement; } } return newString(buf); }
private Matcher escape() { char c = peek(); if (c == 'Q') { return quotation(); } else if (c == 'c') { throw unsupported("control character"); } else if (Constants.DIGIT.contains(c) || c == 'k') { throw unsupported("back references"); } else { AsciiSet set = namedCharClass(); if (set == null) { advance(); return new CharSeqMatcher(String.valueOf(c)); } else { return new CharClassMatcher(set); } } }
private Matcher meta(Matcher matcher) { int start = current - 1; advance(c -> META.contains((char) c)); --current; String quantifier = tokens.subSequence(start, current).toString(); switch (quantifier) { case "?": // Makes repeat reluctant if (matcher instanceof RepeatMatcher) { return matcher; } case "??": case "?+": return OrMatcher.create(matcher, TrueMatcher.INSTANCE); case "*": case "*?": return new ZeroOrMoreMatcher(matcher, term()); case "*+": return new RepeatMatcher(matcher, 0, Integer.MAX_VALUE); case "+": case "+?": return SeqMatcher.create(matcher, new ZeroOrMoreMatcher(matcher, term())); case "++": return SeqMatcher.create(matcher, new RepeatMatcher(matcher, 1, Integer.MAX_VALUE)); default: throw new IllegalArgumentException("unknown quantifier: " + quantifier); } }
private Matcher escape() { char c = peek(); if (c == 'Q') { return quotation(); } else if (c == 'c') { throw unsupported("control character"); } else if (Constants.DIGIT.contains(c) || c == 'k') { throw unsupported("back references"); } else { AsciiSet set = namedCharClass(); if (set == null) { advance(); return new CharSeqMatcher(String.valueOf(c)); } else { return new CharClassMatcher(set); } } }
private Matcher meta(Matcher matcher) { int start = current - 1; advance(c -> META.contains((char) c)); --current; String quantifier = tokens.subSequence(start, current).toString(); switch (quantifier) { case "?": // Makes repeat reluctant if (matcher instanceof RepeatMatcher) { return matcher; } case "??": case "?+": return OrMatcher.create(matcher, TrueMatcher.INSTANCE); case "*": case "*?": return new ZeroOrMoreMatcher(matcher, term()); case "*+": return new RepeatMatcher(matcher, 0, Integer.MAX_VALUE); case "+": case "+?": return SeqMatcher.create(matcher, new ZeroOrMoreMatcher(matcher, term())); case "++": return SeqMatcher.create(matcher, new RepeatMatcher(matcher, 1, Integer.MAX_VALUE)); default: throw new IllegalArgumentException("unknown quantifier: " + quantifier); } }