답변:
다음은 수행하지만 한 번만 대체합니다.
"string".replace('/', 'ForwardSlash');
전역 대체의 경우 또는 정규식을 선호하는 경우 슬래시를 이스케이프하면됩니다.
"string".replace(/\//g, 'ForwardSlash');
"string".replace('/', 'ForwardSlash', 'g')있지만 Firefox afaik에서만 작동하는 비표준 인수입니다.
"string".replace(/\//g, 'ForwardSlash');작동하지만 이것에서 / g를 제거하면 작동하지 않습니다.
/. g 없이는 하나의 인스턴스 만 대체합니다. 그리고 제거 /g하면 마지막 /가 끝 구분 기호이기 때문에 정규식을 완전히 중단합니다.
정규식을 사용하지 않고 (검색 문자열이 사용자 입력 인 경우에만이 작업을 수행하지만) :
var str = 'Hello/ world/ this has two slashes!';
alert(str.split('/').join(',')); // alerts 'Hello, world, this has two slashes!'
var str = '/questions'; // input: "/questions"
while(str.indexOf('/') != -1){
str = str.replace('/', 'http://stackoverflow.com/');
}
alert(str); // output: "http://stackoverflow.com/questions"
제안 된 정규식 /\//g은 나를 위해 작동하지 않았습니다. 나머지 줄 ( //g, replacement);)은 주석 처리되었습니다.
이것은 Christopher Lincolns 아이디어이지만 올바른 코드입니다.
function replace(str,find,replace){
if (find != ""){
str = str.toString();
var aStr = str.split(find);
for(var i = 0; i < aStr.length; i++) {
if (i > 0){
str = str + replace + aStr[i];
}else{
str = aStr[i];
}
}
}
return str;
}
사용 예 :
var somevariable = replace('//\\\/\/sdfas/\/\/\\\////','\/sdf','replacethis\');
자바 스크립트 전역 문자열 교체는 불필요하게 복잡합니다. 이 기능은 그 문제를 해결합니다. 성능에 약간의 영향이있을 수 있지만 무시할 만하다고 확신합니다.
다음은 대체 기능으로 훨씬 깔끔해 보이지만 위의 기능보다 평균적으로 약 25 ~ 20 % 느립니다.
function replace(str,find,replace){
if (find !== ""){
str = str.toString().split(find).join(replace);
}
return str;
}