📄 character.java
字号:
* A character is uppercase if it is not in the range
* <code>'\u2000'</code> through <code>'\u2FFF'</code>, the Unicode
* attribute table does not specify a mapping to uppercase for the
* character, and at least one of the following is true:
* <ul>
* <li>The attribute table specifies a mapping to lowercase for the
* character.
* <li>The name for the character contains the words
* "<code>CAPITAL LETTER</code>".
* <li>The name for the character contains the words
* "<code>CAPITAL LIGATURE</code>".
* </ul>
* <p>
* Of the ISO-LATIN-1 characters (character codes 0x0000 through 0x00FF),
* the following are uppercase:
* <p><blockquote><pre>
* A B C D E F G H I J K L M N O P Q R S T U V W X Y Z
* \u00C0 \u00C1 \u00C2 \u00C3 \u00C4 \u00C5 \u00C6 \u00C7
* \u00C8 \u00C9 \u00CA \u00CB \u00CC \u00CD \u00CE \u00CF \u00D0
* \u00D1 \u00D2 \u00D3 \u00D4 \u00D5 \u00D6 \u00D8 \u00D9 \u00DA
* \u00DB \u00DC \u00DD \u00DE
* </pre></blockquote>
* <p> Many other Unicode characters are uppercase, too.
*
* @param ch the character to be tested.
* @return <code>true</code> if the character is uppercase;
* <code>false</code> otherwise.
* @see java.lang.Character#isLowerCase(char)
* @see java.lang.Character#isTitleCase(char)
* @see java.lang.Character#toUpperCase(char)
* @since 1.0
*/
public static boolean isUpperCase(char ch) {
return (A[Y[(X[ch>>6]<<5)|((ch>>1)&0x1F)]|(ch&0x1)] & 0x1F) == UPPERCASE_LETTER;
}
/**
* Determines if the specified character is a titlecase character.
* A character is considered to be titlecase if and only if
* it is specified to be titlecase by the Unicode 2.0 standard
* (category "Lt" in the Unicode specification data file).
* <p>
* The printed representations of four Unicode characters look like
* pairs of Latin letters. For example, there is an uppercase letter
* that looks like "LJ" and has a corresponding lowercase letter that
* looks like "lj". A third form, which looks like "Lj",
* is the appropriate form to use when rendering a word in lowercase
* with initial capitals, as for a book title.
* <p>
* These are the Unicode characters for which this method returns
* <code>true</code>:
* <ul>
* <li><code>LATIN CAPITAL LETTER D WITH SMALL LETTER Z WITH CARON</code>
* <li><code>LATIN CAPITAL LETTER L WITH SMALL LETTER J</code>
* <li><code>LATIN CAPITAL LETTER N WITH SMALL LETTER J</code>
* <li><code>LATIN CAPITAL LETTER D WITH SMALL LETTER Z</code>
* </ul>
*
* @param ch the character to be tested.
* @return <code>true</code> if the character is titlecase;
* <code>false</code> otherwise.
* @see java.lang.Character#isLowerCase(char)
* @see java.lang.Character#isUpperCase(char)
* @see java.lang.Character#toTitleCase(char)
* @since JDK1.0.2
*/
public static boolean isTitleCase(char ch) {
return (A[Y[(X[ch>>6]<<5)|((ch>>1)&0x1F)]|(ch&0x1)] & 0x1F) == TITLECASE_LETTER;
}
/**
* Determines if the specified character is a digit.
* A character is considered to be a digit if it is not in the range
* <code>'\u2000' <= ch <= '\u2FFF'</code>
* and its Unicode name contains the word
* "<code>DIGIT</code>". For a more complete
* specification that encompasses all Unicode characters that are
* defined as digits, see Gosling, Joy, and Steele, <i>The Java
* Language Specification</i>.
* <p>
* These are the ranges of Unicode characters that are considered digits:
* <table>
* <tr><td>0x0030 through 0x0039</td>
* <td>ISO-LATIN-1 digits ('0' through '9')</td></tr>
* <tr><td>0x0660 through 0x0669</td> <td>Arabic-Indic digits</td></tr>
* <tr><td>0x06F0 through 0x06F9</td>
* <td>Extended Arabic-Indic digits</td></tr>
* <tr><td>0x0966 through 0x096F</td> <td>Devanagari digits</td></tr>
* <tr><td>0x09E6 through 0x09EF</td> <td>Bengali digits</td></tr>
* <tr><td>0x0A66 through 0x0A6F</td> <td>Gurmukhi digits</td></tr>
* <tr><td>0x0AE6 through 0x0AEF</td> <td>Gujarati digits</td></tr>
* <tr><td>0x0B66 through 0x0B6F</td> <td>Oriya digits</td></tr>
* <tr><td>0x0BE7 through 0x0BEF</td> <td>Tamil digits</td></tr>
* <tr><td>0x0C66 through 0x0C6F</td> <td>Telugu digits</td></tr>
* <tr><td>0x0CE6 through 0x0CEF</td> <td>Kannada digits</td></tr>
* <tr><td>0x0D66 through 0x0D6F</td> <td>Malayalam digits</td></tr>
* <tr><td>0x0E50 through 0x0E59</td> <td>Thai digits</td></tr>
* <tr><td>0x0ED0 through 0x0ED9</td> <td>Lao digits</td></tr>
* <tr><td>0x0F20 through 0x0F29</td> <td>Tibetan digits</td></tr>
* <tr><td>0xFF10 through 0xFF19</td> <td>Fullwidth digits</td></tr>
* </table>
*
* @param ch the character to be tested.
* @return <code>true</code> if the character is a digit;
* <code>false</code> otherwise.
* @see java.lang.Character#digit(char, int)
* @see java.lang.Character#forDigit(int, int)
* @since JDK1.0
*/
public static boolean isDigit(char ch) {
return (A[Y[(X[ch>>6]<<5)|((ch>>1)&0x1F)]|(ch&0x1)] & 0x1F) == DECIMAL_DIGIT_NUMBER;
}
/**
* Determines if a character has a defined meaning in Unicode.
* A character is defined if at least one of the following is true:
* <ul>
* <li>It has an entry in the Unicode attribute table.
* <li>Its value is in the range
* <code>
* '\u3040' <= ch <= '\u9FA5'</code>.
* <li>Its value is in the range
* <code>
* '\uF900' <= ch <= '\uFA2D'</code>.
* </ul>
*
* @param ch the character to be tested
* @return <code>true</code> if the character has a defined meaning
* in Unicode; <code>false</code> otherwise.
* @see java.lang.Character#isDigit(char)
* @see java.lang.Character#isLetter(char)
* @see java.lang.Character#isLetterOrDigit(char)
* @see java.lang.Character#isLowerCase(char)
* @see java.lang.Character#isTitleCase(char)
* @see java.lang.Character#isUpperCase(char)
* @since JDK1.0.2
*/
public static boolean isDefined(char ch) {
return (A[Y[(X[ch>>6]<<5)|((ch>>1)&0x1F)]|(ch&0x1)] & 0x1F) != UNASSIGNED;
}
/**
* Determines if the specified character is a letter. For a
* more complete specification that encompasses all Unicode
* characters, see Gosling, Joy, and Steele, <i>The Java Language
* Specification</i>.
*
* <p> A character is considered to be a letter if and only if
* it is specified to be a letter by the Unicode 2.0 standard
* (category "Lu", "Ll", "Lt", "Lm", or "Lo" in the Unicode
* specification data file).
*
* <p> Note that most ideographic characters are considered
* to be letters (category "Lo") for this purpose.
*
* <p> Note also that not all letters have case: many Unicode characters are
* letters but are neither uppercase nor lowercase nor titlecase.
*
* @param ch the character to be tested.
* @return <code>true</code> if the character is a letter;
* <code>false</code> otherwise.
* @see java.lang.Character#isDigit(char)
* @see java.lang.Character#isJavaIdentifierStart(char)
* @see java.lang.Character#isJavaLetter(char)
* @see java.lang.Character#isJavaLetterOrDigit(char)
* @see java.lang.Character#isLetterOrDigit(char)
* @see java.lang.Character#isLowerCase(char)
* @see java.lang.Character#isTitleCase(char)
* @see java.lang.Character#isUnicodeIdentifierStart(char)
* @see java.lang.Character#isUpperCase(char)
* @since JDK1.0
*/
public static boolean isLetter(char ch) {
return (((((1 << UPPERCASE_LETTER) |
(1 << LOWERCASE_LETTER) |
(1 << TITLECASE_LETTER) |
(1 << MODIFIER_LETTER) |
(1 << OTHER_LETTER))
>> (A[Y[(X[ch>>6]<<5)|((ch>>1)&0x1F)]|(ch&0x1)] & 0x1F)) & 1) != 0);
}
/**
* Determines if the specified character is a letter or digit.
* For a more complete specification that encompasses all Unicode
* characters, see Gosling, Joy, and Steele, <i>The Java Language
* Specification</i>.
*
* <p> A character is considered to be a letter if and only if
* it is specified to be a letter or a digit by the Unicode 2.0 standard
* (category "Lu", "Ll", "Lt", "Lm", "Lo", or "Nd" in the Unicode
* specification data file). In other words, isLetterOrDigit is true
* of a character if and only if either isLetter is true of the character
* or isDigit is true of the character.
*
* @param ch the character to be tested.
* @return <code>true</code> if the character is a letter or digit;
* <code>false</code> otherwise.
* @see java.lang.Character#isDigit(char)
* @see java.lang.Character#isJavaIdentifierPart(char)
* @see java.lang.Character#isJavaLetter(char)
* @see java.lang.Character#isJavaLetterOrDigit(char)
* @see java.lang.Character#isLetter(char)
* @see java.lang.Character#isUnicodeIdentifierPart(char)
* @since JDK1.0.2
*/
public static boolean isLetterOrDigit(char ch) {
return (((((1 << UPPERCASE_LETTER) |
(1 << LOWERCASE_LETTER) |
(1 << TITLECASE_LETTER) |
(1 << MODIFIER_LETTER) |
(1 << OTHER_LETTER) |
(1 << DECIMAL_DIGIT_NUMBER))
>> (A[Y[(X[ch>>6]<<5)|((ch>>1)&0x1F)]|(ch&0x1)] & 0x1F)) & 1) != 0);
}
/**
* Determines if the specified character is a
* "Java" letter, that is, the character is permissible
* as the first character in an identifier in the Java language.
* <p>
* A character is considered to be a Java letter if and only if it
* is a letter, the ASCII dollar sign character <code>'$'</code>, or
* the underscore character <code>'_'</code>.
*
* @param ch the character to be tested.
* @return <code>true</code> if the character is a Java letter;
* <code>false</code> otherwise.
* @see java.lang.Character#isJavaIdentifierStart(char)
* @see java.lang.Character#isJavaLetterOrDigit(char)
* @see java.lang.Character#isLetter(char)
* @see java.lang.Character#isLetterOrDigit(char)
* @see java.lang.Character#isUnicodeIdentifierStart(char)
* @since JDK1.0.2
* @deprecated Replaced by isJavaIdentifierStart(char).
*/
public static boolean isJavaLetter(char ch) {
return (A[Y[(X[ch>>6]<<5)|((ch>>1)&0x1F)]|(ch&0x1)] & 0x00070000) >= 0x00050000;
}
/**
* Determines if the specified character is a
* "Java" letter or digit, that is, the character is
* permissible as a non-initial character in an identifier in the
* Java language.
* <p>
* A character is considered to be a Java letter or digit if and
* only if it is a letter, a digit, the ASCII dollar sign character
* <code>'$'</code>, or the underscore character <code>'_'</code>.
*
* @param ch the character to be tested.
* @return <code>true</code> if the character is a Java letter or digit;
* <code>false</code> otherwise.
* @see java.lang.Character#isJavaIdentifierPart(char)
* @see java.lang.Character#isJavaLetter(char)
* @see java.lang.Character#isLetter(char)
* @see java.lang.Character#isLetterOrDigit(char)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -