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

com.fengwenyi.javalib.util.StringUtils Maven / Gradle / Ivy

There is a newer version: 3.0.1
Show newest version
package com.fengwenyi.javalib.util;

import com.fengwenyi.javalib.constant.StringConstant;

import java.util.Objects;
import java.util.StringJoiner;
import java.util.regex.Pattern;

/**
 * 字符串工具类
 * 
    *
  • 字符串判空
  • *
  • 字符串判非空
  • *
* * @author Wenyi Feng */ public class StringUtils { /** * 判断字符串是否为空 * *
    *
  • null - true
  • *
  • "" - true
  • *
  • " " - true
  • *
  • "null" - true
  • *
  • " null " - true
  • *
* * @param str 待判断的字符串 * @return 是否是空字符串,true:空字符串;false:非空字符串 */ public static boolean isEmpty(String str) { if (Objects.isNull(str)) return true; if ("".equals(str.trim())) return true; if ("null".equals(str.trim())) return true; return str.isEmpty(); } /** * 判断字符串是否不为空 * * @param str 待判断的字符串 * @return 是否是空字符串,true:非空字符串;false:空字符串 */ public static boolean isNotEmpty(String str) { return !isEmpty(str); } /** * 自动填充。比如,待填充是:11,填充长度:10,则填充后的字符串为:0000000011 * * @param source 待填充 * @param length 填充长度 * @return 填充后的字符串 */ public static String autoFill(Integer source, Integer length) { if (source == null || length == null || (source + "").length() >= length) return source + ""; return String.format("%0" + length + "d", source); } /** * 自动填充 *

* 比如:待填充字符串:Dd,用x在其左侧填充成10位的字符串, * 则为:xxxxxxxxDd *

*

* 如果待字符串is null,则返回null。 * 如果填充长度is null,或者小于原长度,则返回原待填充字符串。 * 例如:待填充字符串:Dd,用x在其左侧填充成10位的字符串,则仍然为:Dd *

*

* 如果你有指定填充字符串,或者填充方向,我们会进行默认。 * 填充字符串默认为:0,方向为:左。 * 例如:待填充字符串:Dd,填充成10位的字符串,则为:00000000Dd *

* * @param source 待填充的字符串 * @param length 填充后的长度 * @param str 填充的字符(串) * @param isRight 是否在原字符串的右侧填充 * @return 填充后的字符串 */ public static String autoFill(String source, Integer length, String str, Boolean isRight) { // 初始化校验 if (source == null || length == null || (source + "").length() >= length) return source + ""; // 指定填充字符 if (isEmpty(str)) str = "0"; // 指定填充方向 if (isRight == null) isRight = false; // 字符填充长度 int count = (source + "").length(); StringBuilder sb = new StringBuilder(length); // 右填充 if (isRight) { sb.append(source); } // 字符填充 int size = length - count; for (int i = 0; i < size; i++) { sb.append(str); } // 左填充 if (!isRight) { sb.append(source); } return sb.toString(); } /** * 字符串中只有数字。如果只含有数字,则返回true,反之,返回false. * * @param str 待检测字符串 * @return 是否只含有数字(0-9) */ public static boolean hasOnlyNum(String str) { if (isEmpty(str)) return false; Pattern pattern = Pattern.compile("[0-9]*"); return pattern.matcher(str).matches(); } /** * 获取随机字符串 * * @param length 生成字符串的长度 * @return 随机字符串 */ public static String getRandomString(int length) { StringBuilder result = new StringBuilder(); char[] str = "0123456789abcdefghijkmlnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ".toCharArray(); for (int i = 0; i < length; i++) { int index = (int) (Math.random() * str.length); result.append(str[index]); } return result.toString(); } /** * 删除字符串开始的字符串 *

* 如字符串:abcdefg,删除abc,得到的字符串为defg *

* * @param str 原始字符串 * @param remove 需要移除的字符串 * @return 移除后的字符串 */ public static String removeStart(String str, String remove) { if (isNotEmpty(str) && isNotEmpty(remove)) { return str.startsWith(remove) ? str.substring(remove.length()) : str; } else { return str; } } /** * 生成一个指定长度的星号(*)字符串 * * @param length 生成星号的长度 * @return 生成一个指定长度的星号(*)字符串 */ public static String generateStar(int length) { StringJoiner sj = new StringJoiner("", "", ""); for (int i = 0; i < length; i++) { sj.add("*"); } return sj.toString(); } /** * 获取字符串左边指定长度的字符串。 *

* 例如,字符串是:张三,截取长度为1,得到的结果是:张。 *

*

* 注意,如果需要截取的长度大于字符串的长度,那么会返回整个字符串。 * 如截取的长度是3,那么得到的结果是:张三。 *

* * @param source 需要截取的字符串 * @param length 需要获取左边字符串的长度 * @return 返回字符串左边指定长度的字符串 */ public static String getLeft(String source, int length) { if (StringUtils.isEmpty(source) || length < 1) { return StringConstant.BLANK; } if (length > source.length()) { PrintUtils.warn("length(" + length + ") > source's length(" + source.length() + ")"); length = source.length(); } return source.substring(0, length); } /** * 获取字符串右边指定长度的字符串。 *

* 例如,字符串是:张三,截取长度为1,得到的结果是:三。 *

*

* 注意,如果需要截取的长度大于字符串的长度,那么会返回整个字符串。 * 如截取的长度是3,那么得到的结果是:张三。 *

* * @param source 需要截取的字符串 * @param length 需要获取右边字符串的长度 * @return 返回字符串右边指定长度的字符串 */ public static String getRight(String source, int length) { if (StringUtils.isEmpty(source) || length < 1) { return StringConstant.BLANK; } if (length > source.length()) { PrintUtils.warn("length(" + length + ") > source's length(" + source.length() + ")"); length = source.length(); } return source.substring(source.length() - length); } }




© 2015 - 2024 Weber Informatics LLC | Privacy Policy