截取俩个字符中间的字符串:如果确定俩个字符串不一致,只要有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();
	}