欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

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

程序员文章站 2022-03-03 10:36:29
...

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

 

相关标签: 工具 开发工具