String工具类
问题描述
很多时候我们需要对字符串进行很多固定的操作,而这些操作在JDK/JRE中又没有预置,于是我们想到了apache-commons组件,但是它也不能完全覆盖我们的业务需求,所以很多时候还是要自己写点代码的,下面就是基于apache-commons组件写的部分常用方法:
MAVEN依赖
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-lang3</artifactId>
<version>${commons-lang3.version}</version>
</dependency>
代码成果
package com.hykj.util;
import javax.servlet.http.HttpServletRequest;
import java.io.UnsupportedEncodingException;
import java.nio.charset.Charset;
import java.util.Locale;
/**
* 字符串工具类
*
* @author weizj
*/
public class StringUtils extends org.apache.commons.lang3.StringUtils {
/** 值为"NULL"的字符串 */
private static final String NULL_STRING = "NULL";
private static final char SEPARATOR = '_';
/**
* 满足一下情况返回true<br/>
* ①.入参为空
* ②.入参为空字符串
* ③.入参为"null"字符串
*
* @param string 需要判断的字符型
* @return boolean
*/
public static boolean isNullOrEmptyOrNULLString(String string) {
return isBlank(string) || NULL_STRING.equalsIgnoreCase(string);
}
/**
* 把字符串转为二进制码<br/>
* 本方法不会返回null
*
* @param str 需要转换的字符串
* @return 二进制字节码数组
*/
public static byte[] toBytes(String str) {
return isBlank(str) ? new byte[]{} : str.getBytes();
}
/**
* 把字符串转为二进制码<br/>
* 本方法不会返回null
*
* @param str 需要转换的字符串
* @param charset 编码类型
* @return 二进制字节码数组
* @throws UnsupportedEncodingException 字符串转换的时候编码不支持时出现
*/
public static byte[] toBytes(String str, Charset charset) throws UnsupportedEncodingException {
return isBlank(str) ? new byte[]{} : str.getBytes(charset.displayName());
}
/**
* 把字符串转为二进制码<br/>
* 本方法不会返回null
*
* @param str 需要转换的字符串
* @param charset 编码类型
* @param locale 编码类型对应的地区
* @return 二进制字节码数组
* @throws UnsupportedEncodingException 字符串转换的时候编码不支持时出现
*/
public static byte[] toBytes(String str, Charset charset, Locale locale) throws UnsupportedEncodingException {
return isBlank(str) ? new byte[]{} : str.getBytes(charset.displayName(locale));
}
/**
* 二进制码转字符串<br/>
* 本方法不会返回null
*
* @param bytes 二进制码
* @return 字符串
*/
public static String bytesToString(byte[] bytes) {
return bytes == null || bytes.length == 0 ? EMPTY : new String(bytes);
}
/**
* 二进制码转字符串<br/>
* 本方法不会返回null
*
* @param bytes 二进制码
* @param charset 编码集
* @return 字符串
* @throws UnsupportedEncodingException 当前二进制码可能不支持传入的编码
*/
public static String byteToString(byte[] bytes, Charset charset) throws UnsupportedEncodingException {
return bytes == null || bytes.length == 0 ? EMPTY : new String(bytes, charset.displayName());
}
/**
* 二进制码转字符串<br/>
* 本方法不会返回null
*
* @param bytes 二进制码
* @param charset 编码集
* @param locale 本地化
* @return 字符串
* @throws UnsupportedEncodingException 当前二进制码可能不支持传入的编码
*/
public static String byteToString(byte[] bytes, Charset charset, Locale locale) throws UnsupportedEncodingException {
return bytes == null || bytes.length == 0 ? EMPTY : new String(bytes, charset.displayName(locale));
}
/**
* 把对象转为字符串
*
* @param object 需要转化的字符串
* @return 字符串, 可能为空
*/
public static String parseString(Object object) {
if (object == null) {
return null;
}
if (object instanceof byte[]) {
return bytesToString((byte[]) object);
}
return object.toString();
}
/**
* 把字符串转为int类型
*
* @param str 需要转化的字符串
* @return int
* @throws NumberFormatException 字符串格式不正确时抛出
*/
public static int parseInt(String str) throws NumberFormatException {
return isBlank(str) ? 0 : Integer.parseInt(str);
}
/**
* 把字符串转为double类型
*
* @param str 需要转化的字符串
* @return double
* @throws NumberFormatException 字符串格式不正确时抛出
*/
public static double parseDouble(String str) throws NumberFormatException {
return isBlank(str) ? 0D : Double.parseDouble(str);
}
/**
* 把字符串转为long类型
*
* @param str 需要转化的字符串
* @return long
* @throws NumberFormatException 字符串格式不正确时抛出
*/
public static long parseLong(String str) throws NumberFormatException {
return isBlank(str) ? 0L : Long.parseLong(str);
}
/**
* 把字符串转为float类型
*
* @param str 需要转化的字符串
* @return float
* @throws NumberFormatException 字符串格式不正确时抛出
*/
public static float parseFloat(String str) throws NumberFormatException {
return isBlank(str) ? 0L : Float.parseFloat(str);
}
/**
* 获取i18n字符串
*
* @param code
* @param args
* @return
*/
public static String getI18NMessage(String code, Object[] args) {
//LocaleResolver localLocaleResolver = (LocaleResolver) SpringContextHolder.getBean(LocaleResolver.class);
//HttpServletRequest request = ((ServletRequestAttributes)RequestContextHolder.getRequestAttributes()).getRequest();
//Locale locale = localLocaleResolver.resolveLocale(request);
//return SpringContextHolder.getApplicationContext().getMessage(code, args, locale);
return "";
}
/**
* 获得用户远程地址
*
* @param request 请求头
* @return 用户ip
*/
public static String getRemoteAddr(HttpServletRequest request) {
String remoteAddr = request.getHeader("X-Real-IP");
if (isNotBlank(remoteAddr)) {
remoteAddr = request.getHeader("X-Forwarded-For");
} else if (isNotBlank(remoteAddr)) {
remoteAddr = request.getHeader("Proxy-Client-IP");
} else if (isNotBlank(remoteAddr)) {
remoteAddr = request.getHeader("WL-Proxy-Client-IP");
}
return remoteAddr != null ? remoteAddr : request.getRemoteAddr();
}
/**
* 驼峰命名法工具
*
* @return toCamelCase(" hello_world ") == "helloWorld"
* toCapitalizeCamelCase("hello_world") == "HelloWorld"
* toUnderScoreCase("helloWorld") = "hello_world"
*/
public static String toCamelCase(String s, Locale locale, char split) {
if (isBlank(s)) {
return "";
}
s = s.toLowerCase(locale);
StringBuilder sb = new StringBuilder();
for (char c : s.toCharArray()) {
sb.append(c == split ? Character.toUpperCase(c) : c);
}
return sb.toString();
}
public static String toCamelCase(String s) {
return toCamelCase(s, Locale.getDefault(), SEPARATOR);
}
public static String toCamelCase(String s, Locale locale) {
return toCamelCase(s, locale, SEPARATOR);
}
public static String toCamelCase(String s, char split) {
return toCamelCase(s, Locale.getDefault(), split);
}
public static String toUnderScoreCase(String s, char split) {
if (isBlank(s)) {
return "";
}
StringBuilder sb = new StringBuilder();
for (int i = 0; i < s.length(); i++) {
char c = s.charAt(i);
boolean nextUpperCase = (i < (s.length() - 1)) && Character.isUpperCase(s.charAt(i + 1));
boolean upperCase = (i > 0) && Character.isUpperCase(c);
sb.append((!upperCase || !nextUpperCase) ? split : "").append(Character.toLowerCase(c));
}
return sb.toString();
}
public static String toUnderScoreCase(String s) {
return toUnderScoreCase(s, SEPARATOR);
}
/**
* 把字符串转换为JS获取对象值的三目运算表达式
*
* @param objectString 对象串
* 例如:入参:row.user.id/返回:!row?'':!row.user?'':!row.user.id?'':row.user.id
*/
public static String toJsGetValueExpression(String objectString) {
StringBuilder result = new StringBuilder();
StringBuilder val = new StringBuilder();
String[] fileds = split(objectString, ".");
for (int i = 0; i < fileds.length; i++) {
val.append("." + fileds[i]);
result.append("!" + (val.substring(1)) + "?'':");
}
result.append(val.substring(1));
return result.toString();
}
}
String工具类的更多相关文章
- 实用的 集合工具类 和 String工具类
集合工具类:CollectionUtil method: 1.isNotEmpty() 不为空 2.isEmpty() 为空 举例:map集合 Map<String,String ...
- [分享]一个String工具类,也许你的项目中会用得到
每次做项目都会遇到字符串的处理,每次都会去写一个StringUtil,完成一些功能. 但其实每次要的功能都差不多: 1.判断类(包括NULL和空串.是否是空白字符串等) 2.默认值 3.去空白(tri ...
- JAVA String 工具类
java StringUtil 字符串工具类 import java.util.ArrayList; import java.util.LinkedHashSet; import java.util. ...
- String工具类2
1:比较字符串 public static void main(String[] args) { // String去创建对象有多种方式 // 方式1 直接字面值赋值 String s = " ...
- 优雅的将Map转为String工具类
import com.alibaba.fastjson.JSONObject;import org.apache.commons.lang3.StringUtils; import java.lang ...
- String 工具类
package com.mytripod.util; import sun.rmi.runtime.Log; import java.io.UnsupportedEncodingException; ...
- String工具类之“四个判空方式”StringUtils.isNotBlank和StringUtils.isEmpty和StringUtils.isBlank和StringUtils.isNotEmpty
一.判断str字符串都不为空==>StringUtils.isNotBlank(String str); 1 /** 2 * <p>检查一个字符串是否非空("") ...
- String工具类之“前缀比较”StringUtils.startsWith和StringUtils.startsWithIgnoreCase
(1)字符串以prefix为前缀(区分大小写) StringUtils.startsWith(被比较的字符串,比较字符串) 总结: 根据下面代码发现,上面的例子有部分时错误的,有可能是因为思维原因,他 ...
- java工具类
1.HttpUtilsHttp网络工具类,主要包括httpGet.httpPost以及http参数相关方法,以httpGet为例:static HttpResponse httpGet(HttpReq ...
随机推荐
- nginx日志 logrotate配置
nginx 日志 logrotate配置如下: /var/log/nginx/*.log { daily missingok rotate 20 compress delaycompress noti ...
- CS通用项目系统搭建——三层架构第二天
一.编写配置文件 首先找到编写配置文件的位置.winform会在app.config.webform写在web.config中. <?xml version="1.0" en ...
- linux下Vim文本编辑器的常用快捷键
Linux插入命令 a 在光标之后插入字符 A 把光标移动到行首尾进入插入模式 i 在光标之前插入字符 I 把光标移动到行首并进入插入模式 o 在光标下插入新行 O 在光标上插入新行 Linux定位 ...
- jdbc访问pipelinedb
建立Stream及视图 pipeline.execute("create stream caesar(name text,info json);") #创建stream,字段nam ...
- python 的xlrd模块
一.安装 ♦ python官网下载http://pypi.python.org/pypi/xlrd模块安装. ♦或者在cmd窗口 pip install xlrd 二.使用 1.导入模块: imp ...
- jquery 清空、添加、删除select
$("#selectid").empty();//清空 $("#selectid").append("<option value='" ...
- pwnable.kr-col-witeup
和上道题类似,先看看col.c代码呗. 欧克,此程序可以查看flag内容,下载下来慢慢分析. 好叭,他是要输入20个字节,然后每4个字节分块这样相加,结果和0x21DD09EC比较. 先验尝试可知,不 ...
- Python中日期和时间格式化输出的方法
本文转自:https://www.jb51.net/article/62518.htm 本文实例总结了python中日期和时间格式化输出的方法.分享给大家供大家参考.具体分析如下: python格式化 ...
- SUBMIT WITHOUT ALV
data:seltab type table of rsparams, seltab_wa like line of seltab. define add_seltab. if &1 is n ...
- 泛型List去除重复指定字段
泛型List去除重复指定字段ID var list=listTemp.Distinct(new IDComparer ()).ToList(); 重写比较的方法: public class IDCom ...