2012-10-02 3 views
29

मैं निम्नलिखित स्ट्रिंग है:जावास्क्रिप्ट के साथ, प्रत्येक nth स्थिति पर, एक स्ट्रिंग विभाजित करें?

foofaafoofaafoofaafoofaafoofaa 

10 पंक्तियों (अगर मैं हर 3 चरित्र से अलग हो गए, वह यह है कि) के साथ एक सरणी है, जो कुछ इस तरह दिखता है, अगर मैं यह दृष्टांत के लिए गए थे:

var fooarray = new Array ('foo', 'faa', 'foo', 'faa', 'foo', 'faa', 'foo', 'faa', 'foo', 'faa'); 

तो मुझे एक फ़ंक्शन चाहिए, या तो अंतर्निर्मित या कस्टम-निर्मित, जो मुझे प्रत्येक एनएच चरित्र द्वारा स्ट्रिंग को विभाजित करने में मदद कर सकता है। n वें स्थिति के लिए

var foo = "foofaafoofaafoofaafoofaafoofaa"; 
 
console.log(foo.match(/.{1,3}/g));

:

+1

एक जवाब है कि यहाँ सिर्फ इतना है कि (http://stackoverflow.com/questions/4017671/how-do-you-split-a-string-at-certain-character करता है -numbers-in-जावास्क्रिप्ट) –

उत्तर

50

नीचे कोड का प्रयास करें

foo.match(new RegExp('.{1,' + n + '}', 'g')); 
+1

@xdazz लेकिन ओपी ने हर एनएच स्थिति कहा; आपका रेगेक्स 3 पर तय किया गया है। इसे ऊपर उठाने के लिए सामान्य करें। :) –

+0

क्या आप इसे रेगेक्स का उपयोग करके विभाजित कर सकते हैं लेकिन दाएं से बाएं? – vsync

+2

@vsync: मुझे नहीं पता कि यह * सामान्य * मामले में संभव है, लेकिन हो सकता है कि आप केवल इनपुट स्ट्रिंग को उलट दें, मैचों को करें, फिर आउटपुट को उलट दें? – damd

5

जैसा कि मैंने इस लिख रहा था, @xdazz शानदार सरल regex समाधान के साथ आया था।

आप से पूछा है के रूप में (ओम कि जवाब देने के लिए टिप्पणी) एक गैर regex समाधान के लिए, मैं इस वैसे भी प्रस्तुत करेगा ...

function splitNChars(txt, num) { 
    var result = []; 
    for (var i = 0; i < txt.length; i += num) { 
    result.push(txt.substr(i, num)); 
    } 
    return result; 
} 

splitNChars("foofaafoofaafoofaafoofaafoofaa",3); 

JSFiddle Demo

+0

इसके अलावा 'सरणी' एक अच्छा चर नाम नहीं बनाता है। यहां तक ​​कि सोचा था कि जावास्क्रिप्ट केस संवेदनशील है, यह भ्रमित हो सकता है। – clentfort

11

var s = "foofaafoofaafoofaafoofaafoofaa"; 
 
var a = []; 
 
var i = 3; 
 

 
do{ a.push(s.substring(0, i)) } 
 
while((s = s.substring(i, s.length)) != ""); 
 

 
console.log(a)

प्रिंट:

foo,faa,foo,faa,foo,faa,foo,faa,foo,faa 

कार्य डेमो: http://jsfiddle.net/9RXTW/

2

आप इस तरह कर सकते हैं:

var input = "foofaafoofaafoofaafoofaafoofaa"; 

var result = []; 
while (input.length) { 
    result.push(input.substr(0, 3)); 
    input = input.substr(3); 
} 

डेमो: http://jsfiddle.net/Guffa/yAZJ2/

0

के रूप में मार्क वाल्टर ने कहा है, पूरी तरह से another Stack Overflow question कार्यों से इस समाधान:

function splitStringAtInterval (string, interval) { 
    var result = []; 
    for (var i=0; i<string.length; i+=interval) 
    result.push(string.substring (i, i+interval)); 
    return result; 
} 
0

फ़ंक्शन का उपयोग करके एक उदाहरण के बाद। उदाहरण के परीक्षण आउटपुट: ["abc","def","ghi","j"]

function splitEvery(str, n) 
{ 
    var arr = new Array; 
    for (var i = 0; i < str.length; i += n) 
    { 
     arr.push(str.substr(i, n)); 
    } 
    return arr; 
} 

var result = splitEvery('abcdefghij', 3); 
document.write(JSON.stringify(result)); 
संबंधित मुद्दे