1 /* 2 * Licensed to the Apache Software Foundation (ASF) under one or more 3 * contributor license agreements. See the NOTICE file distributed with 4 * this work for additional information regarding copyright ownership. 5 * The ASF licenses this file to You under the Apache License, Version 2.0 6 * (the "License"); you may not use this file except in compliance with 7 * the License. You may obtain a copy of the License at 8 * 9 * http://www.apache.org/licenses/LICENSE-2.0 10 * 11 * Unless required by applicable law or agreed to in writing, software 12 * distributed under the License is distributed on an "AS IS" BASIS, 13 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14 * See the License for the specific language governing permissions and 15 * limitations under the License. 16 */ 17 package org.apache.commons.text; 18 19 /** 20 * Commonly used implementations of {@link CharacterPredicate}. Per the interface 21 * requirements, all implementations are thread safe. 22 * 23 * @since 1.0 24 */ 25 public enum CharacterPredicates implements CharacterPredicate { 26 27 /** 28 * Tests code points against {@link Character#isLetter(int)}. 29 * 30 * @since 1.0 31 */ 32 LETTERS { 33 @Override 34 public boolean test(final int codePoint) { 35 return Character.isLetter(codePoint); 36 } 37 }, 38 39 /** 40 * Tests code points against {@link Character#isDigit(int)}. 41 * 42 * @since 1.0 43 */ 44 DIGITS { 45 @Override 46 public boolean test(final int codePoint) { 47 return Character.isDigit(codePoint); 48 } 49 }, 50 51 /** 52 * Tests if the code points represents a number between 0 and 9. 53 * 54 * @since 1.2 55 */ 56 ARABIC_NUMERALS { 57 @Override 58 public boolean test(final int codePoint) { 59 return codePoint >= '0' && codePoint <= '9'; 60 } 61 }, 62 63 /** 64 * Tests if the code points represents a letter between a and z. 65 * 66 * @since 1.2 67 */ 68 ASCII_LOWERCASE_LETTERS { 69 @Override 70 public boolean test(final int codePoint) { 71 return codePoint >= 'a' && codePoint <= 'z'; 72 } 73 }, 74 75 /** 76 * Tests if the code points represents a letter between A and Z. 77 * 78 * @since 1.2 79 */ 80 ASCII_UPPERCASE_LETTERS { 81 @Override 82 public boolean test(final int codePoint) { 83 return codePoint >= 'A' && codePoint <= 'Z'; 84 } 85 }, 86 87 /** 88 * Tests if the code points represents a letter between a and Z. 89 * 90 * @since 1.2 91 */ 92 ASCII_LETTERS { 93 @Override 94 public boolean test(final int codePoint) { 95 return ASCII_LOWERCASE_LETTERS.test(codePoint) || ASCII_UPPERCASE_LETTERS.test(codePoint); 96 } 97 }, 98 99 /** 100 * Tests if the code points represents a letter between a and Z or a number between 0 and 9. 101 * 102 * @since 1.2 103 */ 104 ASCII_ALPHA_NUMERALS { 105 @Override 106 public boolean test(final int codePoint) { 107 return ASCII_LOWERCASE_LETTERS.test(codePoint) || ASCII_UPPERCASE_LETTERS.test(codePoint) 108 || ARABIC_NUMERALS.test(codePoint); 109 } 110 } 111 }