2016-12-09 50 views
0

的組合我有一個字符串象下面,我想使用多個分裂和「+」,我試圖用下面的代碼,分割字符串起訴串和長度

輸入字符串: 20001 + 20002 + 20003 + 20005 + 20019 + 20035 + 20009 + 20011 + 20015 + 20006 + 20020 + 20047 + 20048 + 20050 + 20049 + 204044 + 22407 + 20052 + 20057 + 20058 + 20059 + 20063 + 20065 + 20067 + 20068 + 20070 + 20072 + 20073 + 20075 + 20076 + 20078 + 20081 + 20084 + 20085 + 20086 + 20140 + 21954 + 206171 + 206170 + 206175 + 20093 + 206168 + 206177 + 206172 + 20098 + 206167 + 20107 + 20053 + 20054 + 20056 + 20108 + 20109 + 20110 + 20112 + 20115 + 20117 + 20119 + 20124 + 20126 + 20131 + 20132 + 20136 + 20141 + 20344 + 20345 + 20346 + 20348 + 20349 + 20355 + 20356.A

代碼:

First found the len of the string, 
var str1 = 20001+20002+20003+20005+20019+20035+20009+20011+20015+20006+20020+20047+20048+20050+20049+204044+22407+20052+20057+20058+20059+20063+20065+20067+20068+20070+20072+20073+20075+20076+20078+20081+20084+20085+20086+20140+21954+206171+206170+206175+20093+206168+206177+206172+20098+206167+20107+20053+20054+20056+20108+20109+20110+20112+20115+20117+20119+20124+20126+20131+20132+20136+20141+20344+20345+20346+20348+20349+20355+20356.A 
str2 = str1.length; 
if (str2 > '400') { 
    var str3 = str1.split("+", 100); 
}else{ 
    var str3 = str1 
} 

所需的輸出:

str3[0] = 20001+20002+20003+20005+20019+20035+20009+20011+20015+20006+20020+20047+20048+20050+20049+204044+22407 
str3[1] = 20052+20057+20058+20059+20063+20065+20067+20068+20070+20072+20073+20075+20076+20078+20081+20084+20085 
str3[2] = 20086+20140+21954+206171+206170+206175+20093+206168+206177+206172+20098+206167+20107+20053+20054 
str3[3] = 20056+20108+20109+20110+20112+20115+20117+20119+20124+20126+20131+20132+20136+20141+20344+20345 
str3[4] = 20346+20348+20349+20355+20356.A 

這裏默認長度爲100,並且應該減少基於字符串,而不是增加(幫助需要做到這一點)

請幫我在這有一些指導

+0

所以,你要的400個字符在一個陣列最大,對不對? – TripleEEE

+0

@三字符char的長度爲100,根據字符串應該減少。 – Ven

+0

'len(str1)'應該是'str1.length' – Mahi

回答

0

幾乎一樣尼娜肖爾茨的答案尋找解釋什麼,但有一點不同。從0開始,然後在接下來的100個字符後查找「+」,然後將其複製到結果數組中。從「+」之後的字符開始,直到字符串耗盡。

var s = '20001+20002+20003+20005+20019+20035+20009+20011+20015+20006+20020+20047+20048+20050+20049+204044+22407+20052+20057+20058+20059+20063+20065+20067+20068+20070+20072+20073+20075+20076+20078+20081+20084+20085+20086+20140+21954+206171+206170+206175+20093+206168+206177+206172+20098+206167+20107+20053+20054+20056+20108+20109+20110+20112+20115+20117+20119+20124+20126+20131+20132+20136+20141+20344+20345+20346+20348+20349+20355+20356.A'; 
 

 
var start = 0, 
 
    min = 100, 
 
    pos = 0, 
 
    result = []; 
 
while (pos != -1) { 
 
    pos = s.indexOf('+', start + min); 
 
    result.push(s.substring(start, pos == -1? s.length : pos)); 
 
    start = pos+1; 
 
} 
 

 
console.log(result);

1

您可以使用String#indexOf的右起始值作爲fromIndex來搜索下一個+並將字符串切片爲t他分開。

var string = '20001+20002+20003+20005+20019+20035+20009+20011+20015+20006+20020+20047+20048+20050+20049+204044+22407+20052+20057+20058+20059+20063+20065+20067+20068+20070+20072+20073+20075+20076+20078+20081+20084+20085+20086+20140+21954+206171+206170+206175+20093+206168+206177+206172+20098+206167+20107+20053+20054+20056+20108+20109+20110+20112+20115+20117+20119+20124+20126+20131+20132+20136+20141+20344+20345+20346+20348+20349+20355+20356.A', 
 
    length = 100, 
 
    start = 0, 
 
    pos, 
 
    result = []; 
 

 
while ((pos = string.indexOf('+', start + length)) !== -1) { 
 
    result.push(string.slice(start, pos)); 
 
    start = pos + 1; 
 
} 
 
result.push(string.slice(start)); 
 

 
console.log(result);
.as-console-wrapper { max-height: 100% !important; top: 0; }

0

這是你在評論

var s = "20001+20002+20003+20005+20019+20035+20009+20011+20015+20006+20020+20047+20048+20050+20049+204044+22407+20052+20057+20058+20059+20063+20065+20067+20068+20070+20072+20073+20075+20076+20078+20081+20084+20085+20086+20140+21954+206171+206170+206175+20093+206168+206177+206172+20098+206167+20107+20053+20054+20056+20108+20109+20110+20112+20115+20117+20119+20124+20126+20131+20132+20136+20141+20344+20345+20346+20348+20349+20355+20356.A" 
 

 
var d = []; 
 

 
var slug = 100;//threshold value for separatuion 
 

 
var rounds = Math.ceil(s.length/slug); //find how many elemnts shall be formed 
 
console.log(rounds); 
 
for(var i=0;i<rounds;i++){ //loop it 
 
d.push(s.substr(0,slug)); //extract the basic initial string 
 
//console.log(d,s,s.length) //extract the remaining string for next iteration 
 
s = (s.length > slug) ? s.substr(slug) : s //make sure for last string less than slug value 
 

 
} 
 

 
console.log(d,d.length);