All Downloads are FREE. Search and download functionalities are using the official Maven repository.

com.github.zhangxd1989.basetool.util.CharUtil Maven / Gradle / Ivy

There is a newer version: 1.0.16
Show newest version
package com.github.zhangxd1989.basetool.util;

import com.github.zhangxd1989.basetool.text.AsciiStrCache;

/**
 * 字符工具类
 *
 * @author sheldon
 */
public class CharUtil {

    public static final char SPACE = ' ';
    public static final char TAB = '	';
    public static final char DOT = '.';
    public static final char SLASH = '/';
    public static final char BACKSLASH = '\\';
    public static final char CR = '\r';
    public static final char LF = '\n';
    public static final char UNDERLINE = '_';
    public static final char DASHED = '-';
    public static final char COMMA = ',';
    public static final char DELIM_START = '{';
    public static final char DELIM_END = '}';
    public static final char BRACKET_START = '[';
    public static final char BRACKET_END = ']';
    public static final char COLON = ':';
    public static final char DOUBLE_QUOTES = '"';
    public static final char SINGLE_QUOTE = '\'';
    public static final char AMP = '&';


    /**
     * 是否为ASCII字符,ASCII字符位于0~127之间
     * 
     *   CharUtil.isAscii('a')  = true
     *   CharUtil.isAscii('A')  = true
     *   CharUtil.isAscii('3')  = true
     *   CharUtil.isAscii('-')  = true
     *   CharUtil.isAscii('\n') = true
     *   CharUtil.isAscii('©') = false
     * 
* * @param c 被检查的字符 * @return true表示为ASCII字符,ASCII字符位于0~127之间 */ public static boolean isAscii(char c) { return c < 128; } /** * 是否为可见ASCII字符,可见字符位于32~126之间 *
     *   CharUtil.isAsciiPrintable('a')  = true
     *   CharUtil.isAsciiPrintable('A')  = true
     *   CharUtil.isAsciiPrintable('3')  = true
     *   CharUtil.isAsciiPrintable('-')  = true
     *   CharUtil.isAsciiPrintable('\n') = false
     *   CharUtil.isAsciiPrintable('©') = false
     * 
* * @param c 被检查的字符 * @return true表示为ASCII可见字符,可见字符位于32~126之间 */ public static boolean isAsciiPrintable(char c) { return c >= 32 && c < 127; } /** * 是否为ASCII控制符(不可见字符),控制符位于0~31和127 *
     *   CharUtil.isAsciiControl('a')  = false
     *   CharUtil.isAsciiControl('A')  = false
     *   CharUtil.isAsciiControl('3')  = false
     *   CharUtil.isAsciiControl('-')  = false
     *   CharUtil.isAsciiControl('\n') = true
     *   CharUtil.isAsciiControl('©') = false
     * 
* * @param c 被检查的字符 * @return true表示为控制符,控制符位于0~31和127 */ public static boolean isAsciiControl(char c) { return c < 32 || c == 127; } /** * 判断是否为字母(包括大写字母和小写字母)
* 字母包括A~Z和a~z *
     *   CharUtil.isLetter('a')  = true
     *   CharUtil.isLetter('A')  = true
     *   CharUtil.isLetter('3')  = false
     *   CharUtil.isLetter('-')  = false
     *   CharUtil.isLetter('\n') = false
     *   CharUtil.isLetter('©') = false
     * 
* * @param c 被检查的字符 * @return true表示为字母(包括大写字母和小写字母)字母包括A~Z和a~z */ public static boolean isLetter(char c) { return isLetterUpper(c) || isLetterLower(c); } /** * 判断是否为大写字母,大写字母包括A~Z *
     *   CharUtil.isLetterUpper('a')  = false
     *   CharUtil.isLetterUpper('A')  = true
     *   CharUtil.isLetterUpper('3')  = false
     *   CharUtil.isLetterUpper('-')  = false
     *   CharUtil.isLetterUpper('\n') = false
     *   CharUtil.isLetterUpper('©') = false
     * 
* * @param c 被检查的字符 * @return true表示为大写字母,大写字母包括A~Z */ public static boolean isLetterUpper(char c) { return c >= 'A' && c <= 'Z'; } /** * 检查字符是否为小写字母,小写字母指a~z *
     *   CharUtil.isLetterLower('a')  = true
     *   CharUtil.isLetterLower('A')  = false
     *   CharUtil.isLetterLower('3')  = false
     *   CharUtil.isLetterLower('-')  = false
     *   CharUtil.isLetterLower('\n') = false
     *   CharUtil.isLetterLower('©') = false
     * 
* * @param c 被检查的字符 * @return true表示为小写字母,小写字母指a~z */ public static boolean isLetterLower(char c) { return c >= 'a' && c <= 'z'; } /** * 检查是否为数字字符,数字字符指0~9 *
     *   CharUtil.isNumber('a')  = false
     *   CharUtil.isNumber('A')  = false
     *   CharUtil.isNumber('3')  = true
     *   CharUtil.isNumber('-')  = false
     *   CharUtil.isNumber('\n') = false
     *   CharUtil.isNumber('©') = false
     * 
* * @param c 被检查的字符 * @return true表示为数字字符,数字字符指0~9 */ public static boolean isNumber(char c) { return c >= '0' && c <= '9'; } /** * 是否为16进制规范的字符,判断是否为如下字符 *
     * 1. 0~9
     * 2. a~f
     * 3. A~F
     * 
* * @param c 被检查的字符 * @return true表示为符合16进制规范的字符 */ public static boolean isHexChar(char c) { return isNumber(c) || (c >= 'a' && c <= 'f') || (c >= 'A' && c <= 'F'); } /** * 是否为字符或数字,包括A~Z、a~z、0~9 *
     *   CharUtil.isLetterOrNumber('a')  = true
     *   CharUtil.isLetterOrNumber('A')  = true
     *   CharUtil.isLetterOrNumber('3')  = true
     *   CharUtil.isLetterOrNumber('-')  = false
     *   CharUtil.isLetterOrNumber('\n') = false
     *   CharUtil.isLetterOrNumber('©') = false
     * 
* * @param c 被检查的字符 * @return true表示为字符或数字,包括A~Z、a~z、0~9 */ public static boolean isLetterOrNumber(final char c) { return isLetter(c) || isNumber(c); } /** * 字符转为字符串
* 如果为ASCII字符,使用缓存 * * @param c 字符 * @return 字符串 * @see AsciiStrCache#toString(char) */ public static String toString(char c) { return AsciiStrCache.toString(c); } /** * 给定对象对应的类是否为字符类,字符类包括: *
     * Character.class
     * char.class
     * 
* * @param o 被检查的对象 * @return true表示为字符类 */ public static boolean isChar(Object o) { return o instanceof Character || o.getClass() == char.class; } /** * 是否空白符
* 空白符包括空格、制表符、全角空格和不间断空格 * * @param c 字符 * @return 是否空白符 */ public static boolean isBlankChar(char c) { return isBlankChar((int) c); } /** * 是否空白符
* 空白符包括空格、制表符、全角空格和不间断空格 * * @param c 字符 * @return 是否空白符 * @see Character#isWhitespace(int) * @see Character#isSpaceChar(int) */ public static boolean isBlankChar(int c) { return Character.isWhitespace(c) || Character.isSpaceChar(c) || c == '\ufeff' || c == '\u202a'; } /** * 是否为Windows或者Linux(Unix)文件分隔符
* Windows平台下分隔符为\,Linux(Unix)为/ * * @param c 字符 * @return 是否为Windows或者Linux(Unix)文件分隔符 */ public static boolean isFileSeparator(char c) { return SLASH == c || BACKSLASH == c; } /** * 比较两个字符是否相同 * * @param c1 字符1 * @param c2 字符2 * @param ignoreCase 是否忽略大小写 * @return 是否相同 */ public static boolean equals(char c1, char c2, boolean ignoreCase) { if (ignoreCase) { return Character.toLowerCase(c1) == Character.toLowerCase(c2); } return c1 == c2; } }




© 2015 - 2024 Weber Informatics LLC | Privacy Policy