StringsUtil字符串工具类---灵活截取
package com.js.ai.modules.pointwall.interfac;
import javax.print.attribute.standard.MediaName;
public class StringsUtil {
/**
* @Title: join
* @Description: 用指定字符串数组相连接,并返回
* @param strs 字符串数组
* @param splitStr 连接数组的字符串
* @return
* @return: String
*/
public static String join(String[] strs, String splitStr){
if(strs!=null){
if(strs.length==1){
return strs[0];
}
StringBuffer sb = new StringBuffer();
for (String str : strs) {
sb.append(str).append(splitStr);
}
if(sb.length()>0){
sb.delete(sb.length()-splitStr.length(), sb.length());
}
return sb.toString();
}
return null;
}
/**
* @Title: subStrStart
* @Description: 从头开始截取
* @param str 字符串
* @param end 结束位置
* @return
* @return: String
*/
public static String subStrStart(String str, int end){
return subStr(str, 0, end);
} /**
*
* @Title: subStrEnd
* @Description: 从尾开始截取
* @param str 字符串
* @param start 开始位置
* @return
* @return: String
*/
public static String subStrEnd(String str, int start){
return subStr(str, str.length()-start, str.length());
} /**
* @Title: subStr
* @Description: 截取字符串 (支持正向、反向截取)
* @param str 待截取的字符串
* @param length 长度 ,>=0时,从头开始向后截取length长度的字符串;<0时,从尾开始向前截取length长度的字符串
* @return
* @throws RuntimeException
* @return: String
*/
public static String subStr(String str, int length) throws RuntimeException{
if(str==null){
throw new NullPointerException("字符串为null");
}
int len = str.length();
if(len<Math.abs(length)){
throw new StringIndexOutOfBoundsException("最大长度为"+len+",索引超出范围为:"+(len-Math.abs(length)));
}
if(length>=0){
return subStr(str, 0,length);
}else{
return subStr(str, len-Math.abs(length), len);
}
} /**
* 截取字符串 (支持正向、反向选择)
* @param str 待截取的字符串
* @param start 起始索引 ,>=0时,从start开始截取;<0时,从length-|start|开始截取
* @param end 结束索引 ,>=0时,从end结束截取;<0时,从length-|end|结束截取
* @return 返回截取的字符串
* @throws RuntimeException
*/
public static String subStr(String str, int start, int end) throws RuntimeException{
if(str==null){
throw new NullPointerException("");
}
int len = str.length();
int s = 0;//记录起始索引
int e = 0;//记录结尾索引
if(len<Math.abs(start)){
throw new StringIndexOutOfBoundsException("最大长度为"+len+",索引超出范围为:"+(len-Math.abs(start)));
}else if(start<0){
s = len - Math.abs(start);
}else if(start<0){
s=0;
}else{//>=0
s = start;
}
if(len<Math.abs(end)){
throw new StringIndexOutOfBoundsException("最大长度为"+len+",索引超出范围为:"+(len-Math.abs(end)));
}else if (end <0){
e = len - Math.abs(end);
}else if (end==0){
e = len;
}else{//>=0
e = end;
}
if(e<s){
throw new StringIndexOutOfBoundsException("截至索引小于起始索引:"+(e-s));
} return str.substring(s, e);
}
public static void main(String[] args) {
String str = "abcde12345678";
System.out.println("--------------------------------");
System.out.println("正向截取长度为3,结果:\n" + StringsUtil.subStr(str, 3));
System.out.println("反向截取长度为4,结果:\n" + StringsUtil.subStr(str, -4));
System.out.println("--------------------------------");
System.out.println("正向截取到第4个字符的位置,结果:\n" + StringsUtil.subStrStart(str, 4));
System.out.println("反向截取到第4个字符的位置,结果:\n" + StringsUtil.subStrEnd(str, 4));
System.out.println("--------------------------------");
System.out.println("从第2个截取到第9个,结果:\n" + StringsUtil.subStr(str, 1, 9));
System.out.println("从第2个截取到倒数第1个,结果:\n" + StringsUtil.subStr(str, 1, -1));
System.out.println("从倒数第4个开始截取,结果:\n" + StringsUtil.subStr(str, -4, 0));
System.out.println("从倒数第4个开始截取,结果:\n" + StringsUtil.subStr(str, -4, 10));
}
}
StringsUtil字符串工具类---灵活截取的更多相关文章
- StringUtils 字符串工具类
package com.thinkgem.jeesite.common.utils; import java.io.File; import java.io.IOException; import j ...
- Redis操作字符串工具类封装,Redis工具类封装
Redis操作字符串工具类封装,Redis工具类封装 >>>>>>>>>>>>>>>>>>& ...
- * 类描写叙述:字符串工具类 类名称:String_U
/****************************************** * 类描写叙述:字符串工具类 类名称:String_U * ************************** ...
- Jsoup请求http或https返回json字符串工具类
Jsoup请求http或https返回json字符串工具类 所需要的jar包如下: jsoup-1.8.1.jar 依赖jar包如下: httpclient-4.5.4.jar; httpclient ...
- StringUtil字符串工具类
package com.zjx.test03; /** * 字符串工具类 * @author * */ public class StringUtil { /** * 判断是否是空 * @param ...
- 产生UUID随机字符串工具类
产生UUID随机字符串工具类 UUID是指在一台机器上生成的数字,它保证对在同一时空中的所有机器都是唯一的.通常平台会提供生成的API.按照开放软件基金会(OSF)制定的标准计算,用到了以太网卡地址. ...
- 自用java字符串工具类
不断封装一些常用的字符串操作加到这个工具类里,不断积累: package com.netease.lede.qa.util; import java.text.ParseException; impo ...
- android开发字符串工具类(一)
package com.gzcivil.utils; import java.io.BufferedReader; import java.io.ByteArrayOutputStream; impo ...
- 分享非常好用的前端分页js工具类 灵活 简单易懂
分享自己封装的前端分页js工具类 下面是默认样式效果截图 可以随意更改js及css 很灵活 /** * pageSize, 每页显示数 * pageIndex, 当前页数 * pageCount 总 ...
随机推荐
- Linux:mii-tool命令详解
mii-tool 用于查看.管理介质的网络接口的状态 语法 mii-tool [-VvRrwl] [-A media,... | -F media] [interface ...] 选项 -V 显示版 ...
- Android Studio 问题锦集【持续更新】
想必,大家在使用Android Studio(后面简称AS)的过程中会遇到各种各样的问题,现在,我也来谈谈我在使用AS过程中遇到的错误. 1.Plugin with id 'com.android.a ...
- Java对多线程的支持
Java运行时系统实现了一个用于调度线程执行的线程调度器,用于确定某一时刻由哪一个线程在CPU上运行. 在Java技术中,线程通常是抢占式的而不需要时间片分配进程(分配给每个线程相等的CPU时间的进程 ...
- Kafka消费者生产者实例
为了更为直观展示Kafka的消息生产消费的过程,我会从基于Console和基于Application两个方面介绍使用实例.Kafka是一个分布式流处理平台,具体来说有三层含义: 它允许发布和订阅记录流 ...
- 我也说说Emacs吧(4) - 光标的移动
在说基本编辑命令之前,我们先加一个小tip,说说如何将函数和键绑定在一起. (define-key global-map [?\C-l] 'recenter-top-bottom) define-ke ...
- Android深入理解JNI(一)JNI原理与静态、动态注册
前言 JNI不仅仅在NDK开发中应用,它更是Android系统中Java与Native交互的桥梁,不理解JNI的话,你就只能停留在Java Framework层.这一个系列我们来一起深入学习JNI. ...
- 网络编程 socket编程 - Asyncsocke
简单的聊天程序:http://blog.csdn.net/chang6520/article/details/7967662 iPhone的标准推荐是CFNetwork 库编程,其封装好的开源库是 c ...
- 获取SQL Server数据库表的列名
SELECT syscolumns.name,systypes.name,syscolumns.isnullable,syscolumns.length FROM syscolumns, systyp ...
- 【剑指offer】之字形打印二叉树,C++实现
原创文章,转载请注明出处! 本题牛客网地址 博客文章索引地址 博客文章中代码的github地址 1.题目 请实现一个函数按照之字形打印二叉树,即第一行按照从左到右的顺序打印,第二层按照从右至左的顺序打 ...
- Cloudify介绍
一篇关于Cloudify的介绍,可以看一下:http://timeson.iteye.com/blog/1699730