JavaScript에서 공백을 밑줄로 바꾸시겠습니까?


353

이 코드를 사용하여 공백을 _로 바꾸려고하는데 문자열의 첫 번째 공백에서 작동하지만 다른 모든 공백 인스턴스는 변경되지 않습니다. 아무도 왜 그런지 아십니까?

function updateKey()
{
    var key=$("#title").val();
    key=key.replace(" ","_");
    $("#url_key").val(key);
}

답변:


694

시험 .replace(/ /g,"_");

편집 : 또는 .split(' ').join('_')RE에 대한 혐오가있는 경우

편집 : 존 Resig는 말했다 :

정적 검색 및 정적 바꾸기로 문자열을 검색하고 바꾸는 경우 .split ( "match"). join ( "replace")으로 작업을 수행하는 것이 더 빠릅니다. 이는 직관적이지 않은 것처럼 보이지만 작동합니다. 대부분의 최신 브라우저에서 그렇게합니다. 다음 버전의 Firefox에서는 .replace (/ match / g, "replace")의 성능을 크게 향상시키기 위해 변경 사항이 있으므로 이전 진술은 오랫동안 적용되지 않습니다.


1
정규 표현식 없이이 작업을 수행 할 수있는 방법이 있습니까?
Upvote를 클릭하십시오

14
.split ( '') .join ( '_')
초승달 신선한

7
대신 / /g사용하는 /\ /g자바 스크립트에서 모두 작업 -. 후자는 CoffeeScript에서도 작동합니다.
Tom Leys

27
2015 년 기준 .replace(/ /g,"_");보다 빠릅니다 .split(' ').join('_').
Gabriel Tomitsuka

8
@Inez를 탐색하는 미래의 사람들은 split / join VS의 두 속도를 모두 테스트 할 수있는 링크가 있습니다. 바꾸다. 2018 년 말 현재 교체가 훨씬 빠릅니다.
Ricks


58

아래 Prasanna의 질문에 대답하려면 :

Javascript에서 여러 공백을 단일 공백으로 바꾸는 방법은 무엇입니까?

동일한 함수 replace를 다른 정규식과 함께 사용합니다 . 공백에 \s대한 표현은 "1 회 이상"에 대한 표현 +은 더하기 부호이므로 Adam의 답변을 다음과 같이 바꾸십시오.

key=key.replace(/\s+/g,"_");

30

당신은 이것을 시도 할 수 있습니다

 var str = 'hello     world  !!';
 str = str.replace(/\s+/g, '-');

여러 공백을 단일 '-'로 바꿀 수도 있습니다.


3
아마도 주목할만한 것 : 이것은 또한 다른 공백을 제거합니다.
Berry M.

18

나는 그것을 위해 JS 성능 테스트를 만들었습니다 : http://jsperf.com/split-and-join-vs-replace2


1
요즘 대체가 더 나은 전체 선택 인 것 같습니다
Houman

케이브-무엇? 모든 브라우저가 동일하지는 않지만 평균적으로 분할 / 결합하는 것이 훨씬 좋습니다. 사실, 많은 최신 브라우저에서 톤이 더 좋습니다! 이것을 설정해 주셔서 감사합니다 Inez!
David Hobs

4
년을 통해 조금 나중에 지금 크롬 32.0.1700.107에서 위의 테스트 .. str.replace ()가 (64 % 빠르게) 훨씬 더 나은 결과를 얻을 수 있음을 실행
jenovachild

12

공백을 밑줄로 교체

var str = 'How are you';
var replaced = str.split(' ').join('_');

출력 : How_are_you


3

나는 이것이 오래되었다는 것을 알고 있지만 String 확장을 언급하는 사람은 없습니다 prototype.

String.prototype.replaceAll = function(search, replace){
    if(!search || !replace){return this;} //if search entry or replace entry empty return the string
    return this.replace(new RegExp('[' + search + ']', 'g'), replace); //global RegEx search for all instances ("g") of your search entry and replace them all.
};

1
끔찍한 아이디어이기 때문에 아무도 그것을 보지 못했습니다. 이 다른 SO 질문을 확인하십시오.

2

그냥 사용 replace:

var text = 'Hello World';
    
new_text = text.replace(' ', '_');
    
console.log(new_text);


3
이것은 단지 그 이후가 아닌 첫 번째 공간을 대체 할 것입니다
Narendra
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.