본문 바로가기
Javascript

javascript replaceAll 기능 사용하기

by 루에 2017. 8. 1.
반응형

처음에 좀 황당했는데, 자바스크립트에는 replaceAll이 없고, replace()는 첫번째 만나는 조건만 바꾼다. 이것 때문에 헤맨 기억이란...


찾아본 방법은 두 가지로, 하나는 split()과 join()을 활용, 다른 하나는 정규식을 이용하는 방법이다.


1. split()과 join()

split(A) : A를 기준으로 문자열을 나눈다.

join(B) : 2개 이상의 문자열을 하나의 문자열로 만들면서, 그 사이에 B를 넣는다.


즉, 문자열.split(A).join(B);

는 Java의 replaceAll(A,B); 와 같은 효과를 낸다.


예제)

1
2
3
4
5
6
7
8
9
10
11
12
13
□ 방법 1. String prototype 메서드 추가 
//replaceAll prototype 선언
String.prototype.replaceAll = function(org, dest) {
    return this.split(org).join(dest);
}
 
//replaceAll 사용
var str = "Hello World";
str = str.replaceAll("o","*");
alert(str);
 
 
출처: http://gent.tistory.com/18 [젠트의 프로그래밍 세상]
cs


2. 정규식 활용

정규식을 활용해 replace규칙을 전체로 확장시킨다.

/g   >> 모든 문자 적용

/i    >> 대소문자 구분하지 않고 모두 적용


문자열.replace(/문자/gi,바꿀문자);

특수문자가 아니더라도 슬래쉬(/)를 사용해야 한다.


예제)

1
2
3
4
5
6
7
□ 방법 2. 정규식 사용 
var str = "Hello World";
str = str.replace(/o/g,"*");
alert(str);
 
 
출처: http://gent.tistory.com/18 [젠트의 프로그래밍 세상]
cs



속도 비교는 못했지만, 아마 정규식쪽이 더 빠르지 않을까 생각된다. 실제 예제 및 결과는 아래와 같다.

개행문자(\n)를 |로 치환한 예제다.


1
2
3
4
5
6
7
var ids = CLIENT_COMPANY_ID.split('\n').join('|');
var names = CLIENT_COMPANY_NAME.replace(/\n/gi,'|');
            
console.log('ids',ids);
>> ids 11147|22810|29262|32138|34514
console.log('names',names);
>> names 바보돼지|(주) 다넷|욕심많은바보|트란쉐리에코리아|60년전통신
cs


반응형

댓글