[英]Javascript method to split string outside curly braces Regex
原始字符串是这样的“嗨,我的名字是{狗|猫}。|嗨,我有一个名字。|{问候|嗨{狗|猫}}”
我怎样才能得到:
使用正则表达式?
由于 javascript 正则表达式无法处理嵌套结构(此处为大括号),因此您必须使用其他方法。
例子:
var str = "Hi my name is {dog|cat}.|Hi I have a name.|{Gretings|Hi {dog|cat}}";
var parts = str.split(/([{}|])/);
var flag = 0;
var results = Array();
var tmp = '';
for (var i = 0; i<parts.length; i++) {
switch(parts[i]) {
case '{': flag++; tmp +=parts[i]; break;
case '}': (flag)&&flag--; tmp +=parts[i]; break;
case '|': if (flag==0) {
results.push(tmp);
tmp='';
break; }
default: tmp +=parts[i];
}
}
results.push(tmp);
console.log(results);
也许我无法回答这个问题,但你的意思是这样的:
var str = "Hi my name is {dog|cat}.|Hi I have a name.|{Gretings|Hi {dog|cat}}";
console.info(str.split("|"))
返回一个数组
["Hi my name is {dog", "cat}.", "Hi I have a name.", "{Gretings", "Hi {dog", "cat}}"]
但是使用正则表达式?
- - 编辑 - -
作为一个非常简单的版本,你可以这样做(失去句号):
var str = "Hi my name is {dog|cat}.|Hi I have a name.|{Gretings|Hi {dog|cat}}";
var pattern = /[.][|]/;
var re = new RegExp(pattern);
var result = str.split(re);
//var result = str.split(new RegExp(/[.][|]/));
console.info('your result: ', result);
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.