>웹 프론트엔드 >JS 튜토리얼 >JavaScript에서 여러 문자열 교체를 수행하는 방법은 무엇입니까?

JavaScript에서 여러 문자열 교체를 수행하는 방법은 무엇입니까?

Barbara Streisand
Barbara Streisand원래의
2024-11-29 09:44:10640검색

How to Perform Multiple String Replacements in JavaScript?

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 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.