2010-02-13 6 views
3

분할 기능에 관한 간단한 질문입니다.빠른 자바 스크립트 분할 질문

두 번째 간격마다 어떻게 문자열을 나눌 수 있습니까?

myArray = 'This is a sample sentence that I am using' 
myArray = myString.split(" "); 

나는이

This is a < 2 spaces 
sample sentence that < 2 spaces 
that I am < 2 spaces

추천하고 마지막으로 할 말은 내가이 문제를 처리 할 방법 공간이 아닌 경우 배열을 생성하고 싶습니다 ...?

아무 도움이 주어지지 않습니다.

답변

2
myString = 'This is a sample sentence that I am using'; 
myArray = myString.match(/[^ ]+(+[^ ]+){0,2}/g); 
alert(myArray); 
+0

아하 이것은 훨씬 낫다. (그리고이 경우'(... :) '대신'(? : ...)'이 사용되어야한다고 생각합니다.) – kennytm

1

아름다운 해결책이 아닙니다. \1 문자가 사용되지 않는다고 가정합니다.

array = 'This is a sample sentence that I am using'; 
array = array.replace(/(\S+\s+\S+\s+\S+)\s+/g, "$1\1").split("\1"); 
// If you want multiple whitespaces not merging together 
// array = array.replace(/(\S*\s\S*\s\S*)\s/g, "$1\1").split("\1"); 
// If you only want to match the space character (0x20) 
// array = array.replace(/([^ ]+ +[^ ]+ +[^ ]+) +/g, "$1\1").split("\1"); 
alert(array); 
+0

완벽한 덕분에 작동합니다

function splitOnEvery(str, splt, count){ var arr = str.split(splt); var ret = []; for(var i=0; i<arr.length; i+=count){ var tmp = ""; for(var j=i; j<i+count; j++){ tmp += arr[j]; } ret.push(tmp); } return ret; } 

! –

1

분할 그것을 모든 공간, 그리고 다른 모든 요소를 ​​연결할 : havent 한 코드를 테스트하지만,

+1

루프 몸체를 간단하게 대체 할 수 있습니다 :'ret.push (arr.slice (i, i + count) .join (splt));'. – bobince