2012-05-22 4 views
9

문자열이있어서이를 쿼리에 추가하기 위해 수정해야합니다. 문자열의 공백을 하이픈으로 바꿉니다.

내가 문자열 "모든 경우를위한 바구니"이 말과 나는 "A-바구니를 위해 모든-행사"

나는 공간을 찾아 하이픈으로 대체 할 필요가되고 싶어요. 그런 다음 문자열에 다른 공백이 있는지 확인해야합니다. 그렇지 않은 경우 고정 문자열을 반환합니다. 그렇다면 동일한 프로세스를 다시 실행하십시오.

소리가 재귀 함수처럼 들리지만 어떻게 설정해야할지 모르겠다. 어떤 도움이라도 대단히 감사하겠습니다.

답변

15

는이 같은 정규식 대체를 사용할 수 있습니다

var str = "A Basket For Every Occasion"; 
str = str.replace(/\s/g, "-"); 

정규식의 "g"플래그는 모든 공백을 대체 취득하게됩니다.


행에 여러 개의 대시가 없도록 여러 공백을 하나의 하이픈에 접을 수 있습니다. 즉,이과 같습니다

var str = "A Basket For Every Occasion"; 
str = str.replace(/\s+/g, "-"); 
+0

완벽한 감사합니다. 8 분 안에 받아 들일 수 있습니다. –

+0

@ 타밀어 - 당신의 의견을 이해할 수 없습니다. OP는 글로벌 정규 표현식 대체에 대해 명확하게 알지 못했기 때문에이를 교육하고 SO의 성격과 향후 시청자의 이익을 위해 작동하는 방식을 보여주었습니다. 또한 한 줄에 여러 개의 대시가 표시되지 않도록 개선 아이디어를 제안했습니다. 이 질문에 어떻게 대답해야한다고 생각하십니까? – jfriend00

+0

@ jfriend00 내가 틀린 것을 넣어 줘서 유감이지만 같은 작전에 지금까지 아무 것도 시도하지 않았다면 그에게 물어볼 수도 있었을 것이다. 그렇지 않으면 여기에서 그는 문제를 해결하려고하는 다음 순간을 생각할 것입니다. – Tamil

6

를 사용하여 교체 세계적으로 공백 \s (플래그 g)에 대한 찾을 수

var a = "asd asd sad".replace(/\s/g,"-"); 

a는

value = value.split(' ').join('-'); 

I 시도

"asd-asd-sad" 
+1

upvoted. 감사. jfriend는 처음에 대답했다. –

4

된다 이것을 g에 사용했다. 내 공간을 없애 버려. 하이픈 대신에 나는 그것을 비게하고 잘 작동한다. 또한 그것은 모두 JS입니다. .split(limiter)은 리미터를 삭제하고 문자열 조각을 배열에 넣습니다 (리미터 요소 없음). 하이픈으로 배열을 결합 할 수 있습니다.

관련 문제