자바스크립트의 문자열에서 특정 문자를 치환하는 방법을 소개합니다.
1. replace()로 문자열 치환
String 타입은 replace()
함수로 특정 문자열을 다른 문자열로 변환할 수 있습니다.
- 기본적으로
replace()
는 먼저 검색되는 1개의 문자열만 변환 - 여러 문자열을 변환할 때는 정규 표현식을 이용하여 일치하는 모든 문자열을 변환할 수 있음
예를 들어, replace('old', 'new')
는 문자열에 있는 old 문자열을 new 문자열로 변환한 문자열을 리턴합니다.
let str = 'Hello world, Java';
str = str.replace('Java', 'JavaScript');
console.log(str);
Output:
Hello world, JavaScript
문자열에 바꾸려는 문자열이 여러개 있어도, 가장 먼저 찾은(앞에 있는) 문자열 1개만 변환합니다.
let str = 'Hello world, Java, Java, Java';
str = str.replace('Java', 'JavaScript');
console.log(str);
Output:
Hello world, JavaScript, Java, Java
문자열 순서만 거꾸로 변환하려면 replace() 대신에 reverse() 함수를 사용해야 합니다. 자세한 것은 "JavaScript - 문자열 뒤집기, 거꾸로 출력"를 참고하시면 됩니다.
2. 정규식을 이용하여 모든 문자열 치환
문자열 안에 변경하려는 문자열을 여러개 있고 모든 문자열을 바꾸고 싶을 때, 정규식을 이용하여 모든 문자열을 변경할 수 있습니다.
replace(/[old str]/g, '[new str]')
는 문자열에 있는 모든old string
을new string
으로 변환
아래 예제에서 정규표현식은 /Java/g
인데, 정규표현식은 /Pattern/flag
처럼 패턴과 플래그로 구성됩니다.
/Java/g
에서 패턴은 Java, 플래그는 g가 됩니다.- 주의할 점은 찾으려는 문자열에 따옴표를 입력하지 않아야 합니다.
아래 예제는 문자열에 있는 Java
를 모두 JavaScript
로 변환하는 예제입니다. 플래그 g
는 해당하는 모든 문자열을 변환하라는 의미입니다.
let str = 'Hello world, Java, Java, Java';
str = str.replace(/Java/g, 'JavaScript');
console.log(str);
Output:
Hello world, JavaScript, JavaScript, JavaScript
3. 대소문자 구분하지 않고 문자열 치환
아래 예제는 아무 문자열도 치환하지 않습니다. 그 이유는 replace()
가 대소문자를 구분하여 문자열을 찾기 때문입니다. 즉, java
와 동일한 문자열이 없기 때문에 아무것도 변경하지 않습니다.
let str = 'Hello world, Java, Java, Java';
str = str.replace(/java/g, 'JavaScript');
console.log(str);
Output:
Hello world, Java, Java, Java
대소문자를 구분하지 않고 변환하려면 아래처럼 플래그에 i
를 추가하시면 됩니다. 결과를 보시면 모든 문자열이 변환된 것을 확인하실 수 있습니다.
let str = 'Hello world, Java, Java, Java';
str = str.replace(/java/gi, 'JavaScript');
console.log(str);
Output:
Hello world, JavaScript, JavaScript, JavaScript
i 플래그 대신에, 문자열을 대문자 또는 소문자로 변환하고 비교할 수도 있습니다. 자세한 내용은 "Java - 대소문자 변환 & 구분없이 비교"를 참고해주세요.
4. 모든 숫자를 공백으로 치환
문자열에 있는 모든 숫자를 제거할 때, 숫자를 공백으로 치환하면 됩니다.
패턴 [1-9]
는 1부터 9까지 숫자를 의미하며, 이 범위의 숫자에 해당하면 공백으로 치환합니다.
let str = 'This123is456Java789script';
str = str.replace(/[1-9]/gi, '');
console.log(str);
Output:
ThisisJavascript
5. 연속된 숫자들을 하나의 문자로 치환
아래 예제의 패턴에서 +
는 1개 이상의 문자 패턴입니다. [1-9]
패턴은 숫자 1개를 의미하지만, [1-9]+
는 연속된 숫자들을 의미합니다.
아래 예제에서 123
, 456
, 789
가 하나의 패턴으로 검색되어, 각각 @
로 치환됩니다. +
가 없다면 9개의 숫자가 별개의 패턴으로 인식되어 9개의 @
로 치환됩니다.
let str = 'This123is456Java789script';
str = str.replace(/[1-9]+/gi, '@');
console.log(str);
Output:
This@is@Java@script
6. 더 많은 정규표현식 예제
정규 표현식을 배우는 것이 쉽지는 않지만, 여러 프로그래밍 언어에서 동일한 규칙으로 사용됩니다. 현재 정규표현식이 익숙하지 않다면, 어떤 원리로 동작하는지 기초적인 내용만 먼저 공부하시고 나중에 구현에 필요한 내용이 있을 때 그것과 관련된 패턴을 찾아보고 학습하셔도 좋을 것 같습니다.
말씀드린 것처럼 정규표현식의 내용은 방대하고, 이 글은 replace()
를 소개하는 글이기 때문에, 정규표현식에 대한 자세한 내용은 담지 못하였습니다. Mozilla - Regular Expressions 페이지를 참고하셔도 좋고, 구글에서 정규표현식으로 검색하시면 다양한 자료가 있습니다.
Related Posts
- Javascript - 현재 날짜/시간을 항상 한국 기준으로 가져오기
- Javascript - 문자열 사이에 문자 넣기
- Javascript - 버튼 활성화/비활성화 시키는 방법
- Javascript - 버튼 이름 변경하기
- Javascript - div 안의 내용 가져오기, 변경, 추가, 삭제
- Javascript - <ol>, <ul>에 <li> 동적 추가, 삭제
- Javascript - div 생성, 추가, 삭제 방법
- Javascript - 테이블 행(tr) 숨기기, 보이기
- Javascript - div에 링크 거는 방법
- Javascript - 자식 요소(element) 개수 확인
- Javascript - 요소(element) 복사, 붙여넣기
- Javascript - div에 클릭 이벤트(onclick) 설정 방법
- Javascript - 체크박스 선택/해제 시, 텍스트박스 활성화/비활성화
- Javascript - input 숫자만 입력받도록 설정
- Javascript - 자식 노드 모두 제거
- Javascript - 체크박스 선택, 해제 방법
- Javascript - input text 값 가져오기
- JavaScript - 문자열을 배열(Array)로 변환
- JavaScript - 특정 문자열의 포함 여부 확인 (includes, 정규표현식)
- JavaScript - 문자열 비교 방법, 5가지
- JavaScript - 문자열 바꾸기(replace, 정규식 치환)
- JavaScript - 배열 전체 출력 (for, forEach, for in, for of)
- JavaScript - 한번만 실행되는 함수 (once: true)
- JavaScript - 선택된 checkbox 값 가져오기
- JavaScript - element(버튼, div) 보이기 숨기기
- JavaScript - 숫자를 배열로 변경하는 방법
- JavaScript - div, 태그 안의 내용 가져오기
- JavaScript - 부모, 형제, 자식 element 찾기
- JavaScript - 클래스 이름으로 element 찾는 방법
- JavaScript Array find() 함수
- JavaScript Array splice() 함수
- JavaScript의 contains() 함수
- JavaScript sort() 함수, 예제 소개
- JavaScript - Set 생성 및 초기화
- JavaScript Set add() 함수