我想从一个字符串中获取JavaScript中的数组,将其减半。
示例:
// From this:
var myStr = 'cocacola';
// To this:
var myArray = ['coca', 'cola'];
我尝试了以下方法:
var myStr = 'cocacola';
var strHalf = myStr.length / 2;
// This won't work
var myArray = myStr.match(/.{1,strHalf}/g);
// Only this will work fine
var myArray = myStr.match(/.{1,4}/g);
答案 0 :(得分:3)
您可以执行String.slice()来解决此问题
var myStr = 'cocacola';
let len = myStr.length;
let result = [myStr.slice(0, len/2), myStr.slice(len/2)]
console.log(result);

答案 1 :(得分:0)
您需要使用RegExp()
构造函数并创建一个它理解的字符串:
var regexString = "/.{1," + strHalf + "}/g";
var myRegex = new RegExp( regexString );
var myArray = myStr.match( myRegex );
......但要小心这样做;如果strHalf
是包含/
等特殊字符的字符串,那么您的RegExp会有奇怪的行为。
答案 2 :(得分:0)
您可以使用RegExp构造函数创建非硬编码的正则表达式:
var myArray = myStr.match(new RegExp('/.{1,'+strHalf+'}/g'));
构造函数不知道strHalf
应该是一个整数,因此请确保您可以控制它。
众所周知,这会引入很多安全问题,请不要在生产中使用它。当他们不应该使用正则表达式时经常使用它们。如果您使用正则表达式,请查看其他选项
还有更好的选择,但至少它是可能的!
答案 3 :(得分:0)
你不需要正则表达式。
最简单的方法是:
var myStr = 'cocacola';
var strHalf = myStr.length / 2;
var array = [myStr.substr(0, strHalf),myStr.substr(strHalf, myStr.length)];
jsfiddle :https://jsfiddle.net/cudg8qc3/
答案 4 :(得分:0)
您只需slice
字符串并将第一个元素放在第一个插槽中,第二个元素放在数组中的第二个插槽中。
var str_len = myStr.length
var my_array = [myStr.slice(0, str_len/2), myStr.slice(str_len/2, str_len)]