Java工具集-字符(CharUtil)
- 2019 年 10 月 28 日
- 笔记
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/weixin_42528266/article/details/102619211
简单工具类
写作初衷:由于日常开发经常需要用到很多工具类,经常根据需求自己写也比较麻烦 网上好了一些工具类例如commom.lang3或者hutool或者Jodd这样的开源工具,但是 发现他们之中虽然设计不错,但是如果我想要使用,就必须要引入依赖并且去维护依赖,有些 甚至会有存在版本编译不通过问题,故此想要写作一个每个类都可以作为独立工具类使用 每个使用者只需要复制该类,到任何项目当中都可以使用,所以需要尊从以下两个原则才能 做到.在此诚邀各位大佬参与.可以把各自用过的工具,整合成只依赖JDK,每个类都能够单独 使用的工具.每个人当遇到业务需求需要使用的时候,只需要到这里单独拷贝一个即可使用. 抛弃传统的需要引入依赖的烦恼.让大家一起来解决你所面临的业务问题吧!
介绍
遵从两大原则
- 1.绝不依赖JDK以外的源码
- 2.牺牲代码复用性,每个类都必须是单独的组件,绝不互相引用,做到完全解耦
package *; /** * @program: myutil * @description: * @author: ChenWenLong * @create: 2019-05-23 15:29 **/ public class CharUtil { public static final char SLASH = '/'; public static final char BACKSLASH = '\'; private static final int ASCII_LENGTH = 128; private static final String[] CACHE = new String[ASCII_LENGTH]; /** * 是否为ASCII字符,ASCII字符位于0~127之间 * * <pre> * CharUtil.isAscii('a') = true * CharUtil.isAscii('A') = true * CharUtil.isAscii('3') = true * CharUtil.isAscii('-') = true * CharUtil.isAscii('n') = true * CharUtil.isAscii('©') = false * </pre> * * @param ch 被检查的字符处 * @return true表示为ASCII字符,ASCII字符位于0~127之间 */ public static boolean isAscii(char ch) { return ch < 128; } /** * 是否为可见ASCII字符,可见字符位于32~126之间 * * <pre> * CharUtil.isAsciiPrintable('a') = true * CharUtil.isAsciiPrintable('A') = true * CharUtil.isAsciiPrintable('3') = true * CharUtil.isAsciiPrintable('-') = true * CharUtil.isAsciiPrintable('n') = false * CharUtil.isAsciiPrintable('©') = false * </pre> * * @param ch 被检查的字符处 * @return true表示为ASCII可见字符,可见字符位于32~126之间 */ public static boolean isAsciiPrintable(char ch) { return ch >= 32 && ch < 127; } /** * 是否为ASCII控制符(不可见字符),控制符位于0~31和127 * * <pre> * CharUtil.isAsciiControl('a') = false * CharUtil.isAsciiControl('A') = false * CharUtil.isAsciiControl('3') = false * CharUtil.isAsciiControl('-') = false * CharUtil.isAsciiControl('n') = true * CharUtil.isAsciiControl('©') = false * </pre> * * @param ch 被检查的字符 * @return true表示为控制符,控制符位于0~31和127 */ public static boolean isAsciiControl(final char ch) { return ch < 32 || ch == 127; } /** * 判断是否为字母(包括大写字母和小写字母)<br> * 字母包括A~Z和a~z * * <pre> * CharUtil.isLetter('a') = true * CharUtil.isLetter('A') = true * CharUtil.isLetter('3') = false * CharUtil.isLetter('-') = false * CharUtil.isLetter('n') = false * CharUtil.isLetter('©') = false * </pre> * * @param ch 被检查的字符 * @return true表示为字母(包括大写字母和小写字母)字母包括A~Z和a~z */ public static boolean isLetter(char ch) { return isLetterUpper(ch) || isLetterLower(ch); } /** * <p> * 判断是否为大写字母,大写字母包括A~Z * </p> * * <pre> * CharUtil.isLetterUpper('a') = false * CharUtil.isLetterUpper('A') = true * CharUtil.isLetterUpper('3') = false * CharUtil.isLetterUpper('-') = false * CharUtil.isLetterUpper('n') = false * CharUtil.isLetterUpper('©') = false * </pre> * * @param ch 被检查的字符 * @return true表示为大写字母,大写字母包括A~Z */ public static boolean isLetterUpper(final char ch) { return ch >= 'A' && ch <= 'Z'; } /** * <p> * 检查字符是否为小写字母,小写字母指a~z * </p> * * <pre> * CharUtil.isLetterLower('a') = true * CharUtil.isLetterLower('A') = false * CharUtil.isLetterLower('3') = false * CharUtil.isLetterLower('-') = false * CharUtil.isLetterLower('n') = false * CharUtil.isLetterLower('©') = false * </pre> * * @param ch 被检查的字符 * @return true表示为小写字母,小写字母指a~z */ public static boolean isLetterLower(final char ch) { return ch >= 'a' && ch <= 'z'; } /** * <p> * 检查是否为数字字符,数字字符指0~9 * </p> * * <pre> * CharUtil.isNumber('a') = false * CharUtil.isNumber('A') = false * CharUtil.isNumber('3') = true * CharUtil.isNumber('-') = false * CharUtil.isNumber('n') = false * CharUtil.isNumber('©') = false * </pre> * * @param ch 被检查的字符 * @return true表示为数字字符,数字字符指0~9 */ public static boolean isNumber(char ch) { return ch >= '0' && ch <= '9'; } /** * 是否为16进制规范的字符,判断是否为如下字符 * <pre> * 1. 0~9 * 2. a~f * 4. A~F * </pre> * * @param c 字符 * @return 是否为16进制规范的字符 * @since 4.1.5 */ public static boolean isHexChar(char c) { return isNumber(c) || (c >= 'a' && c <= 'f') || (c >= 'A' && c <= 'F'); } /** * 是否为字符或数字,包括A~Z、a~z、0~9 * * <pre> * CharUtil.isLetterOrNumber('a') = true * CharUtil.isLetterOrNumber('A') = true * CharUtil.isLetterOrNumber('3') = true * CharUtil.isLetterOrNumber('-') = false * CharUtil.isLetterOrNumber('n') = false * CharUtil.isLetterOrNumber('©') = false * </pre> * * @param ch 被检查的字符 * @return true表示为字符或数字,包括A~Z、a~z、0~9 */ public static boolean isLetterOrNumber(final char ch) { return isLetter(ch) || isNumber(ch); } /** * 字符转为字符串<br> * 如果为ASCII字符,使用缓存 * * @param c 字符 * @return 字符串 */ public static String toString(char c) { return c < ASCII_LENGTH ? CACHE[c] : String.valueOf(c); } /** * 给定类名是否为字符类,字符类包括: * * <pre> * Character.class * char.class * </pre> * * @param clazz 被检查的类 * @return true表示为字符类 */ public static boolean isCharClass(Class<?> clazz) { return clazz == Character.class || clazz == char.class; } /** * 给定对象对应的类是否为字符类,字符类包括: * * <pre> * Character.class * char.class * </pre> * * @param value 被检查的对象 * @return true表示为字符类 */ public static boolean isChar(Object value) { return value instanceof Character || value.getClass() == char.class; } /** * 是否空白符<br> * 空白符包括空格、制表符、全角空格和不间断空格<br> * * @param c 字符 * @return 是否空白符 * @see Character#isWhitespace(int) * @see Character#isSpaceChar(int) * @since 4.0.10 */ public static boolean isBlankChar(char c) { return isBlankChar((int) c); } /** * 是否空白符<br> * 空白符包括空格、制表符、全角空格和不间断空格<br> * * @see Character#isWhitespace(int) * @see Character#isSpaceChar(int) * @param c 字符 * @return 是否空白符 * @since 4.0.10 */ public static boolean isBlankChar(int c) { return Character.isWhitespace(c) || Character.isSpaceChar(c) || c == 'ufeff' || c == 'u202a'; } /** * 判断是否为emoji表情符<br> * * @param c 字符 * @return 是否为emoji * @since 4.0.8 */ public static boolean isEmoji(char c) { return false == ((c == 0x0) || // (c == 0x9) || // (c == 0xA) || // (c == 0xD) || // ((c >= 0x20) && (c <= 0xD7FF)) || // ((c >= 0xE000) && (c <= 0xFFFD)) || // ((c >= 0x10000) && (c <= 0x10FFFF))); } /** * 是否为Windows或者Linux(Unix)文件分隔符<br> * Windows平台下分隔符为,Linux(Unix)为/ * * @param c 字符 * @return 是否为Windows或者Linux(Unix)文件分隔符 * @since 4.1.11 */ public static boolean isFileSeparator(char c) { return SLASH == c || BACKSLASH == c; } /** * 比较两个字符是否相同 * * @param c1 字符1 * @param c2 字符2 * @param ignoreCase 是否忽略大小写 * @return 是否相同 * @since 4.0.3 */ public static boolean equals(char c1, char c2, boolean ignoreCase) { if (ignoreCase) { return Character.toLowerCase(c1) == Character.toLowerCase(c2); } return c1 == c2; } }