截取一个字符串里括号内的所有内容

在这里插入图片描述

📝问题描述:

  • 截取一个字符串里 以" {{"开始和结束 “}}” 的内容
  • 不使用正则表达式实现

❓预期效果

  • 传入字符:{{xx}}_撒打sdsa{}算{x{22}}撒{{我是括号里面的值}xx}打算_{{{33}}
  • 预期结果: xx, 33
  • 我传入字符串是很极端的情况,因此可以看出可以满足大部分场景的使用
  • 直接大家看到输出結果

  • 从控制台打印可以看到,跟我预期的结果是一样的
  • 上代码

🧠解决方案

1️⃣javascript & vue 实现


/**
 * 截取某段字符串
 * @param str 需要截取的字符串
 * @param start 以某个字符开始 例如 {{
 * @param end 以某个字符结束 例如 }}
 * @returns {[]} 控制台最终输出 [xx, 33]
 */
function split(str, start, end) {
    list = []
    var i = 0;
    while (true) {
        var a = str.indexOf(start, i);
        var b = str.indexOf(end, i);
        if (a === -1 || b === -1) {
            break;
        }
        if (a > b) {
            i = a;
            continue;
        }
        if (a < b) {
            a = str.lastIndexOf(start, b);

        }
        var r = str.substring(a + start.length, b);
        list[list.length] = r;
        i = b;
    }
    return list;
}
console.log(split("{{xx}}_撒打sdsa{}算{x{22}}撒{{我是括号里面的值}xx}打算_{{{33}}","{{","}}"))

2️⃣java实现

   /**
    * 控制台最终输出结果:  [xx, 33]
    * 
    */
   public static void main(String[] args) {
        String strInfo = "{{xx}}_撒打sdsa{}算{x{22}}撒{{我是括号里面的值}xx}打算_{{{33}}";
        List<String> list = get(strInfo, "{{", "}}");
        System.out.println(list);

    }
    /**
     * 获取 截取后字符集
     * @param str 需要截取的字符串
     * @param start 以某个字符开始 例如 {{
     * @param end 以某个字符结束 例如 }}
     * @return
     */
    public static List<String> get(String str, String start, String end) {
        List<String> list = new ArrayList<>();
        int i = 0;
        while (true) {
            int a = str.indexOf(start, i);
            int b = str.indexOf(end, i);
            if (a == -1 || b == -1) {
                break;
            }
            if (a > b) {
                i = a;
                continue;
            }
            if (a < b) {
                a = str.lastIndexOf(start, b);

            }
            String r = str.substring(a + start.length(), b);
            list.add(r);
            i = b;
        }
        return list;
    }
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值