2012-11-28 4 views
0

공백으로 텍스트 줄을 나눕니다 (즉, 모든 공백을 제거하고 나머지는 별도 요소로 남겨 둡니다). 나는이 코드를 가지고있다 :JS에서 텍스트를 공백으로 나누기

line.split(/\s+/); 

그러나 정확히 내가 원하는 방식으로 작동하지 않는다. 예를 들어, hi there!은 다음과 같이 나뉩니다 : [안녕하세요, 거기!,] (배열 끝에 빈 요소 하나가 있음을 알 수 있습니다). 그 마지막 빈 요소가없는 줄을 나누는 방법?

+1

그냥 먼저 문자열을 트리밍 할 쉬울 한 다음 분할을하지 않을 것입니다. –

답변

4

문자열 끝에 빈 공간이 없습니까? 사촌이 나를 위해 일하고있어.

어떤 경우에는,이 시도 :

line.replace(/^\s+|\s+$/g,'').split(/\s+/); 

이 분할 전에 문자열의 시작과 끝에서 공백을 제거합니다.

+0

나는이 문제가 윈도우 스타일의 EOL 인코딩에 있다고 의심했다. 나는 차선 끝에 공백이 없지만'\ r'는 마지막 '빈'요소를 형성했다. 어쨌든, 당신의 솔루션은 보편적입니다 (창문과 유닉스 스타일의 인코딩 모두에서 작동합니다). 고마워! – NPS

+0

'^ $'을 사용할 때'g' 모드를 사용해야하는 이유가 있습니까? 아마 사용법을 오해하고있을 것입니다. – Ian

+0

문자열에 시작과 끝 부분에 공백이 있으면이 두 문자열이 정규식의 두 개의 개별 일치 항목이며 모두 교체해야합니다. 그러므로 'g'의 필요성. –

-1

왜 단순히 분할

line.split(' '); 

사용 "안녕하세요!"

["hi", "there!"] 
+1

연속적인 공백 문자가 여러 개 있으면 빈 배열 요소가됩니다. –

+0

''안녕하세요! '. split (' '); [ "hi", "", ","there! "] ' –

+0

@MichaelBerkowski - 아, 그래, 내 편이라! – bPratik

2

전화 .trim에() 문자열을 분할하기 전에, 그것은 전에 당신의 문자열

+1

'.trim()'이 (가) ES5이고 [아직 완전히 지원되지 않음] (https://developer.mozilla.org/en-US/docs/JavaScript/Reference/Global_Objects/String/Trim) –

+0

AFAIK javascript에는 'trim()'의 네이티브 구현입니다! – bPratik

+0

@MichaelBerkowski IE8은 조건부 주석을 통해 ES5-shim을 얻습니다. 이제 ES5 API를 사용해 보겠습니다. P' –

2
line.trim().split(/\s+/); 

이 당신이 원하는 것을해야 후 공백을 제거합니다.

+0

충분합니다. 그것은 현대적인 브라우저에서도 그렇습니다. –

+0

죄송합니다, 그냥 그것을 보았다, 내가 브라우저 (그리고 IE8 지옥) +1 – Amadan

+0

로 사용하고 싶지 아무것도 작동해야합니다 그것을 추가하는 방법에 너무 좋은 소식. http://stackoverflow.com/questions/498970/how-do-i-trim-a-string-in-javascript –

0

line.match(/\S+/g); // => ["hi", "there!"]