[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”)의 성능을 크게 향상시키기 위해 변경 사항이 있으므로 이전 진술은 오랫동안 적용되지 않습니다.
답변
답변
아래 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.
};