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

本文介绍如何在Java中处理字符串,特别关注于当两个待比较的字符可能相同时,使用getFromIndex方法确保准确截取。通过实例演示了如何利用正则表达式和indexOf方法来定位并获取特定字符对之间的子串。
摘要由CSDN通过智能技术生成

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

 

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值