如何在JavaScript中首次出现char(:)来拆分字符串

时间:2018-03-28 10:07:48

标签: javascript split

我有两个字符串:

1. 'TestKey : TestValue'
2. '"Test : Key" : Test:Value'

这里我想在第一次出现char冒号(:)时拆分两个字符串,如果字符串部分用双引号括起来,我必须忽略冒号。

我必须拆分第一个字符串,如下所示:

[TestKey, TestValue]

需要拆分第二个字符串,如下所示:

[Test : Key, Test:Value]

任何帮助都会在使用或不使用Regex的JavaScript中受到高度赞赏。

2 个答案:

答案 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