当前位置: 代码迷 >> 综合 >> 字符串截取俩个字符之间的字符串
  详细解决方案

字符串截取俩个字符之间的字符串

热度:42   发布时间:2024-02-28 02:21:25.0

 截取俩个字符中间的字符串:如果确定俩个字符串不一致,只要有subString方法就可以了,如果俩个字符一致,需要加入getFromIndex方法。

//引入 regex的工具包
import java.util.regex.Matcher;
import java.util.regex.Pattern;/*** 截取俩个字符串之间的字符串* @param str* @param strStart* @param strEnd* @return*/public String subString(String str, String strStart, String strEnd) {/* 找出指定的2个字符在 该字符串里面的 位置 */int strStartIndex = str.indexOf(strStart);int strEndIndex = str.indexOf(strEnd);// 如果俩个字符相同,结束字符为第二个if (strStart.equalsIgnoreCase(strEnd)) {int fromIndex = getFromIndex(str,strEnd,2);strEndIndex = fromIndex;}/* index 为负数 即表示该字符串中 没有该字符 */if (strStartIndex < 0) {return "字符串 :---->" + str + "<---- 中不存在 " + strStart + ", 无法截取目标字符串";}if (strEndIndex < 0) {return "字符串 :---->" + str + "<---- 中不存在 " + strEnd + ", 无法截取目标字符串";}/* 开始截取 */String result = str.substring(strStartIndex, strEndIndex).substring(strStart.length());return result;}//子字符串modelStr在字符串str中第count次出现时的下标private int getFromIndex(String str, String modelStr, Integer count) {//对子字符串进行匹配Matcher slashMatcher = Pattern.compile(modelStr).matcher(str);int index = 0;//matcher.find();尝试查找与该模式匹配的输入序列的下一个子序列while(slashMatcher.find()) {index++;//当modelStr字符第count次出现的位置if(index == count){break;}}//matcher.start();返回以前匹配的初始索引。return slashMatcher.start();}

 

  相关解决方案