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

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

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



답변

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

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

편집 : 존 Resig는 말했다 :

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


답변

이 시도:

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

그것은 전역 찾기 / 바꾸기를 할 것입니다

자바 스크립트 교체


답변

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

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

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

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


답변

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

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

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


답변

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


답변

공백을 밑줄로 교체

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

출력 : How_are_you


답변

나는 이것이 오래되었다는 것을 알고 있지만 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.
};