我想用这样的split函数分隔这个文本。数组项应为3个字符。
var text = "abcdef";
var splitted = ["abc", "def"]
var text = "abcdefg";
var splitted = ["a", "bcd", "efg"]
var text = "abcdefgk";
var splitted = ["ab", "cde", "fgk"]
文字从上到下分割。
答案 0 :(得分:1)
var size = 3; //specify the size here
var str = "abcdefgk" //the string you want to split
var i = str.length % 3; // modulo gets you the remaining part
var result = [str.substring(0,i)]; //create array with only first part
//for the rest, iterate over str and add chunks of length size
for(; i < str.length; i+=size){
result.push(str.substring(i, i+size))
}
alert(result) //display the result
答案 1 :(得分:0)
正则表达式解决方案:
var text = "abcdefg";
var regex = text.length % 3 ? '^.{'+ (text.length % 3) +'}|.{3}' : '.{3}';
var result = text.match(new RegExp(regex, 'g'));
// ["a", "bcd", "efg"]
你也可以这样做:
var text = "abcdefg";
var result = [text.substr(0, text.length % 3)].concat(text.substr(text.length % 3).match(/.{3}/g));
提示:在使用正则表达式时,请考虑使用.match
而不是.split
来获取结果。
答案 2 :(得分:0)
如果您想使用 递归 ,请尝试使用
<script type="text/javascript">
function strSplit(str){
var arr=[];
dorecurSplit(str,str.length,arr,0);
alert(arr);
}
function dorecurSplit(st,len,ar,x)
{
if(len<=0)
return ar;
else{
var i=len%3;
if(i==0)
{
ar.push(st.substring(x,x+3));
dorecurSplit(st,len-3,ar,x+3);
}
else
{
ar.push(st.substring(x,i));
dorecurSplit(st,len-i,ar,x+i);
}
}
}
</script>
调用此
<button onclick="strSplit('abcdefghij')">Split it</button>
答案 3 :(得分:0)
对于所需的输出,我们需要使用子字符串,因为较小的部分是在开头而不是在结尾处。注意:我们不使用切片,因为切片中的负索引将再次从字符串中取出字符。所以,我们坚持使用子串来避免这种情况。
var str = "abcdefgh";
var len = str.length;
var res = [];
for(var i=len;i>0;i=i-3){
res.push(str.substring(i-3,i));
}
//res array will contain the desired output now
但是,如果解析应该从头开始贪婪,即{3,3,2}而不是{2,3,3},那么使用正则表达式( / [a-zA-Z] {1, 3} / GI 强> )为此,这更容易和更快。为此,我们不需要子串。 var str =&#34; abcdef&#34 ;; var result = str.match(/ [a-zA-Z] {1,3} / gi); // [&#34; ABC&#34;&#34; DEF&#34;]
var str = "abcdefgh";
var result = str.match(/[a-zA-Z]{1,3}/gi); //["abc","def","gh"]
var str = "abcdefg";
var result = str.match(/[a-zA-Z]{1,3}/gi); //["abc","def","g"]