2012-03-02 4 views
1

문자열을 '단어'배열로 분할하는 가장 좋은 방법은 무엇입니까? 공백으로 분할하지만 대시는 이전 '단어'의 일부가됩니다.공백과 대시로 문자열 분할

예 :

[ "이", "이다", "에", "예 -", ""이 무슨 뜻인지

데모에 대한 예 - 문자열입니다 " 문자열 "," ","데모 "," ","나는 ","] "

편집을 무엇을 의미하는 : 내가 바보 - 그것은 이것이다 :

someString.replace(/-/g, "- ").split(/[\s]/); // retain dashes 

답변

6

을 splittin g는 구분 기호가 항상 사용되기 때문에 구분 기호가 결과에 남아 있어야하는 경우 작동하지 않습니다. 대신

사용 .match는 :

"This is an example-string to demo what I mean".match(/[^\s-]+-?/g); 
// ["This", "is", "an", "example-", "string", "to", "demo", "what", "I", "mean"] 

이 정규 표현식은 공간/대시되지 않은 하나 이상의 문자와 일치하고, 옵션으로 대시를 다음과 같습니다. g 플래그가 있으면 모든 일치 항목이 반환됩니다.

+0

내가 게시 한 후 1 분 만에 떠오른 해결책으로 질문을 편집 할 때 답했습니다. 당신의 방법이 내 것이 더 낫습니까? – Adamarla

+0

@adamarla : 단어가 대시로 시작하는 경우를 제외하고는 똑같은 행동을하는 것으로 보입니다. – pimvdb

+0

아 네, 초기 대시가 중요 할 수 있습니다 : "-12.85가 음수" – Adamarla