我正在编写一个函数,该函数接收类似于以下格式的字符串:
"Fred:Corwill;Wilfred:Corwill;Barney:Tornbull;Betty:Tornbull;Bjon:Tornbull;Raphael:Corwill;Alfred:Corwill"
我想将其推入数组,然后将每个键值转换为锯齿状数组,如下所示:
[["Fred":]["Corwill";]["Alfred:"]["Corwill"]]
我尝试通过split()创建一个初始数组,第二个 并推动字符串的每个部分,但都没用,我该如何实现 锯齿状阵列分裂?
这是我的代码:
function meeting(s) {
var initialArray = s.split(' ');
var jaggedArray = [];
for(var i = 0; i < initialArray.length; i++) {
jaggedArray.push(initialArray[i]);
}
}
答案 0 :(得分:0)
function splitMulti(str, tokens){
var tempChar = tokens[0]; // We can use the first token as a temporary join character
for(var i = 1; i < tokens.length; i++){
str = str.split(tokens[i]).join(tempChar);
}
str = str.split(tempChar);
return str;
}
var temp_result = splitMulti(yourString, [':', ';']) // or you can use regex
var final_result = [];
for (var i=0; i<temp_result.length; i++) {
result.push([temp_result[i]]);
}
答案 1 :(得分:0)
此刻,由于用空格.split(" ")
进行拆分,因此您在尝试获得所需结果方面做得并不多,但是您的字符串没有空格,因此根本无法实现任何目的。
相反,您可以使用regular expression拆分当前字符串。通过使用正则表达式,您可以更精确地控制如何拆分字符串。下面,我用过:
/(\w+[:;])/
在这里,我用字字符(连续)(\w+
)分割字符串,后跟分号(;
)或冒号(:
)。
但是,这将返回一维数组,其中包含其他""
(空)字符串。因此,我还使用了.reduce
来删除空字符串并将每个拆分值放入其自己的数组中,从而为您提供结果。
请参见下面的工作示例:
const str = "Fred:Corwill;Wilfred:Corwill;Barney:Tornbull;Betty:Tornbull;Bjon:Tornbull;Raphael:Corwill;Alfred:Corwill",
res = str.split(/(\w+[:;])/).reduce((acc, wrd) => wrd ? [...acc, [wrd]] : acc, []);
console.log(res);
答案 2 :(得分:0)
要用:
或;
分割字符串,您可以简单地使用正则表达式通过.split()
方法获得所需的结果。
const names = "Fred:Corwill;Wilfred:Corwill;Barney:Tornbull;Betty:Tornbull;Bjon:Tornbull;Raphael:Corwill;Alfred:Corwill"
const separatedNames = names.split(/:|;/)
console.log(separatedNames) // => ["Fred", "Corwill", ...]