반응형
처음에 좀 황당했는데, 자바스크립트에는 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 |
반응형
댓글