JavaScript의 다중 문자열 대체
문자열 대체는 프로그래밍에서 일반적인 작업입니다. JavaScript에서 교체() 메서드를 사용하면 지정된 문자열의 단일 일치 항목을 새 문자열로 바꿀 수 있습니다. 하지만 동시에 여러 문자열을 다른 여러 문자열로 바꾸고 싶다면 어떻게 해야 할까요?
다음 예를 고려해 보세요.
var str = "I have a cat, a dog, and a goat."; // Attempt to replace multiple strings with incorrect results str = str.replace(/cat/gi, "dog"); str = str.replace(/dog/gi, "goat"); str = str.replace(/goat/gi, "cat"); // Output: "I have a cat, a cat, and a cat"
보시다시피 이 방법으로는 원하는 결과가 나오지 않습니다. "나에게는 개, 염소, 고양이가 있어요."라는 결과가 나왔습니다. 대신 "cat"의 모든 인스턴스를 "dog" 등으로 잘못 대체합니다.
특정 솔루션
원하는 결과를 얻으려면 각 교체를 처리하는 함수:
var str = "I have a cat, a dog, and a goat."; var mapObj = { cat:"dog", dog:"goat", goat:"cat" }; str = str.replace(/cat|dog|goat/gi, function(matched){ return mapObj[matched]; }); // Output: "I have a dog, a goat, and a cat"
이 접근 방식에서는 키-값을 정의하는 맵 객체(mapObj)를 생성합니다. 교체할 문자열 쌍입니다. 그런 다음 이러한 문자열 중 하나와 일치하는 정규식을 사용하고 이를 지도 객체의 해당 값으로 바꿉니다.
솔루션 일반화
이 접근 방식을 일반화하려면 을 사용하면 정규 표현식을 동적으로 생성하고 필요에 따라 지도 객체를 업데이트할 수 있습니다.
var mapObj = {cat:"dog",dog:"goat",goat:"cat"}; var re = new RegExp(Object.keys(mapObj).join("|"),"gi"); str = str.replace(re, function(matched){ return mapObj[matched]; });
이 접근 방식을 사용하면 별도의 작업 없이 대체 쌍을 추가하거나 제거할 수 있습니다. 정규 표현식 자체를 수정합니다.
재사용 가능한 함수
프로세스를 더욱 추상화하기 위해 재사용 가능한 함수를 만들 수 있습니다.
function replaceAll(str,mapObj){ var re = new RegExp(Object.keys(mapObj).join("|"),"gi"); return str.replace(re, function(matched){ return mapObj[matched.toLowerCase()]; }); }
다음과 같이 할 수 있습니다. 그런 다음 이 함수를 사용하여 특정 문자열에서 여러 문자열을 다른 여러 문자열로 바꿉니다.
위 내용은 JavaScript에서 여러 문자열 교체를 수행하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!