我有两个字符串:
1. 'TestKey : TestValue'
2. '"Test : Key" : Test:Value'
这里我想在第一次出现char冒号(:)时拆分两个字符串,如果字符串部分用双引号括起来,我必须忽略冒号。
我必须拆分第一个字符串,如下所示:
[TestKey, TestValue]
需要拆分第二个字符串,如下所示:
[Test : Key, Test:Value]
任何帮助都会在使用或不使用Regex的JavaScript中受到高度赞赏。
答案 0 :(得分:2)
我们需要首先拆分并检查每组数据中的双引号,如果没有找到则通过连接添加它们。
var str = '"Test : Key" : Test:Value';
var arr = str.split(':');
var newArr = [];
var ktr = '';
for(let i=0;i<arr.length;i++) {
if(arr[i].indexOf('"') !== -1) {
ktr += arr[i] + ':';
} else {
newArr.push(arr[i]);
}
}
if(ktr !== '') {
ktr = ktr.substring(0,ktr.length-1);
newArr.unshift(ktr);
}
console.log(newArr.join(':'));
答案 1 :(得分:0)
这是一段使用RegExp测试您提供的字符串作为示例的工作代码:
var regex = /\"{0,1}([^"]*)\"{0,1}\s:\s\"{0,1}([^"]*)\"{0,1}/g;
var str1 = 'TestKey : TestValue';
var str2 = '"Test:Key" : Test:Value';
var str3 = '"Test : Key" : Test:Value';
var firstArray = regex.exec(str1);
regex.lastIndex = 0; //reset the regex
var secondArray = regex.exec(str2);
regex.lastIndex = 0; //reset the regex
var thirdArray = regex.exec(str3);
regex.lastIndex = 0; //reset the regex
//remove the first element of each array, which is the whole string
firstArray.shift();
secondArray.shift();
thirdArray.shift();
希望它有所帮助。
您可以在此处测试RegExp:https://regex101.com/r/PV123v/1