
文章目录
- 问题描述:
-
- ❓预期效果
- 解决方案
-
- 1️⃣javascript & vue 实现
- 2️⃣java实现
问题描述:
- 截取一个字符串里 以" {{"开始和结束 “}}” 的内容
- 不使用正则表达式实现
❓预期效果
- 传入字符:
{{xx}}_撒打sdsa{}算{x{22}}撒{{我是括号里面的值}xx}打算_{{{33}}
- 预期结果:
xx, 33
- 我传入
字符串是很极端
的情况,因此可以看出可以满足大部分场景
的使用
- 直接大家看到输出結果

- 从控制台打印可以看到,跟我预期的结果是一样的
- 上代码
解决方案
1️⃣javascript & vue 实现
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实现
public static void main(String[] args) {
String strInfo = "{{xx}}_撒打sdsa{}算{x{22}}撒{{我是括号里面的值}xx}打算_{{{33}}";
List<String> list = get(strInfo, "{{", "}}");
System.out.println(list);
}
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;
}