View Javadoc
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 }