001/* 002 * Licensed to the Apache Software Foundation (ASF) under one or more 003 * contributor license agreements. See the NOTICE file distributed with 004 * this work for additional information regarding copyright ownership. 005 * The ASF licenses this file to You under the Apache License, Version 2.0 006 * (the "License"); you may not use this file except in compliance with 007 * the License. You may obtain a copy of the License at 008 * 009 * http://www.apache.org/licenses/LICENSE-2.0 010 * 011 * Unless required by applicable law or agreed to in writing, software 012 * distributed under the License is distributed on an "AS IS" BASIS, 013 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 014 * See the License for the specific language governing permissions and 015 * limitations under the License. 016 */ 017package org.apache.commons.text; 018 019/** 020 * <p> 021 * Commonly used implementations of {@link CharacterPredicate}. Per the interface 022 * requirements, all implementations are thread safe. 023 * </p> 024 * 025 * @since 1.0 026 */ 027public enum CharacterPredicates implements CharacterPredicate { 028 029 /** 030 * Tests code points against {@link Character#isLetter(int)}. 031 * 032 * @since 1.0 033 */ 034 LETTERS { 035 @Override 036 public boolean test(final int codePoint) { 037 return Character.isLetter(codePoint); 038 } 039 }, 040 041 /** 042 * Tests code points against {@link Character#isDigit(int)}. 043 * 044 * @since 1.0 045 */ 046 DIGITS { 047 @Override 048 public boolean test(final int codePoint) { 049 return Character.isDigit(codePoint); 050 } 051 }, 052 053 /** 054 * Tests if the code points represents a number between 0 and 9. 055 * 056 * @since 1.2 057 */ 058 ARABIC_NUMERALS { 059 @Override 060 public boolean test(final int codePoint) { 061 return codePoint >= '0' && codePoint <= '9'; 062 } 063 }, 064 065 /** 066 * Tests if the code points represents a letter between a and z. 067 * 068 * @since 1.2 069 */ 070 ASCII_LOWERCASE_LETTERS { 071 @Override 072 public boolean test(final int codePoint) { 073 return codePoint >= 'a' && codePoint <= 'z'; 074 } 075 }, 076 077 /** 078 * Tests if the code points represents a letter between A and Z. 079 * 080 * @since 1.2 081 */ 082 ASCII_UPPERCASE_LETTERS { 083 @Override 084 public boolean test(final int codePoint) { 085 return codePoint >= 'A' && codePoint <= 'Z'; 086 } 087 }, 088 089 /** 090 * Tests if the code points represents a letter between a and Z. 091 * 092 * @since 1.2 093 */ 094 ASCII_LETTERS { 095 @Override 096 public boolean test(final int codePoint) { 097 return ASCII_LOWERCASE_LETTERS.test(codePoint) || ASCII_UPPERCASE_LETTERS.test(codePoint); 098 } 099 }, 100 101 /** 102 * Tests if the code points represents a letter between a and Z or a number between 0 and 9. 103 * 104 * @since 1.2 105 */ 106 ASCII_ALPHA_NUMERALS { 107 @Override 108 public boolean test(final int codePoint) { 109 return ASCII_LOWERCASE_LETTERS.test(codePoint) || ASCII_UPPERCASE_LETTERS.test(codePoint) 110 || ARABIC_NUMERALS.test(codePoint); 111 } 112 } 113}