1. trim() 으로 공백 제거
1.1) trim() 메소드는 원본 문자열을 수정하지 않고 문자열 양 끝의 공백을 제거하고 새로운 문자열을 반환한다.
let str = " Hello, Wolrd ";
console.log(str.trim());
//console 결과값
"Hello,World"
1.2) trimStart(), trimEnd()는 문자열 왼쪽 또는 오른쪽 공백을 제거하고 새로운 문자열을 반환한다.
let str = " Hello, World ";
let tStart = str.trimStart(); //문자열이 시작하는 왼쪽 공백열 제거
console.log(tStart);
//console.결과값
"Hello, World "
let tEnd = str.trimEnd(); //문자열이 끝나는 오른쪽 공백열 제거
console.log(tEnd);
//console.결과값
" Hello, World"
2. split(), join() 으로 공백 제거
trim() 메소드는 문자열 사이의 공백은 지워주지 않는다. 문자열 사이 사이 모든 공백까지 제거하고 싶다면 split() 메소드와 join() 메소드를 통해 사용할 수 있다.
let str = " Hello, World "; //(참고)앞 뒤에 띄어쓰기가 두 번씩 들어가있음.
let strReplace = str.split(' ').join('');
console.log(strReplace);
//console 결과값
"Hello,World"
3. replace() 으로 공백 제거
3.1) replace() 기본 구문
str.replace("찾을 문자열", "변경할 문자열")
3.2) replace()로 공백 제거해보기
let str = " Hello, World "; //(참고)앞 뒤에 띄어쓰기가 두 번씩 들어가있음.
let strReplace = str.replace(/ /gi,"");
console.log(strReplace);
//console 결과값
"Hello,World"
replace() 메소드에 위 예시와 같이 "찾을 문자열"에 공백을 넣고, "변경할 문자열"에 빈문자열을 넣어서 공백을 제거하려고 했는데 맨 앞의 공백만 지워진 값만 반환되었다. 그 이유는 replace() 메소드는 왼쪽에서 부터 함수를 실행시키며 제일 먼저 일치하는 값만 변경시키고 모든 텍스트에 적용시키지 않기 때문이다. 그렇다면 어떻게 해야 replace() 메소드로 모든 텍스트에 적용시킬 수 있을까? 방법은 정규표현식을 사용하는 것이다.
3.3) 정규 표현식이란?
정규 표현식은 문자열에서 '특정 문자'를 찾기 위한 패턴이다.
예를 들어 휴대전화번호는 010-1111-2222로 "숫자3개"-"숫자4개"-"숫자4개"로 이루어져있는데, 정규 표현식으로 아래와 같이 패턴을 만들어주면 특정 문자가 해당 패턴에 맞는지 확인할 수 있다.
const regex = /\d{3}-\d{4}-\d{4}/;
// (\d는 숫자를 의미하고, {} 안의 숫자는 갯수를 의미한다.)
regex.test('010-1111-2222') // true;
regex.test('01-11-22') // false;
const text = "안녕하세요 제 번호는 010-1111-2222 입니다. call me~!";
text.match(/\d{3}-\d{4}-\d{4}/); // 010-1111-2222
참고) 자주 사용되는 정규표현식 기호
* : 뒤에 이어지는 문자까지 모두 선택
d : 숫자를 의미함
s : 공백을 의미함
^ : 시작하는 점을 의미함
$ : 끝나는 점을 의미함
3.4) 정규 표현식으로 문자열 전체 공백 제거해보기
- g : 전체 모든 문자열을 변경 global
- i : 영문 대소문자를 무시, 모두 일치하는 패턴 검색 ignore
let str = " Hello, World ";
let strReplace = str.replace(/ /gi,"");
console.log(strReplace);
//console 결과값
"Hello,World"
찾을 문자열에 정규 표현식 / /gi 를 작성함으로써 replace() 메소드에게 전체 문자열에서 공백을 찾은 후 빈문자열으로 변환하라는 명령어가 작성되었고, console에는 모든 공백이 제거된 값이 반환되었다. 위에 작성한 정규식 코드는 아래와 같은 방법으로도 사용할 수도 있다.
let str = " Hello, World "; //(참고)앞 뒤에 띄어쓰기가 두 번씩 들어가있음.
let strReplace = str.replace(/\s/gi,"");
console.log(strReplace);
//console 결과값
"Hello,World"
위 코드는 공백을 s로 바꾸었는데 s는 정규표현식에서 공백을 의미하는 코드로 사용된다.
3.4) 정규 표현식으로 문자열 앞 공백만 제거해보기
let str = " Hello, World "; //(참고)앞 뒤에 띄어쓰기가 두 번씩 들어가있음.
let strReplace = str.replace(/^ /gi, "");
console.log(strReplace);
//console 결과값
" Hello, World "
기존 str 변수 앞에 위치해있던 두 개의 공백 중 하나의 공백만 사라짐
3.5) 정규 표현식으로 문자열 뒤 공백만 제거해보기
let str = " Hello, World "; //(참고)앞 뒤에 띄어쓰기가 두 번씩 들어가있음.
let strReplace = str.replace(/\s$/gi, "");
console.log(strReplace);
//console 결과값
" Hello, World "
기존 str 변수 뒤에 위치해있던 두 개의 공백 중 하나의 공백만 사라짐
4. replaceAll() 으로 공백 제거
replace() 메소드는 첫 번째 찾은 문자열만 변환하고 종료하는 메소드이지만 replaceAll() 메소드는 모든 문자열 내에 찾는 문자열을 찾고 변환시켜준다.
let str = " Hello, World "; //(참고)앞 뒤에 띄어쓰기가 두 번씩 들어가있음.
let strReplace = str.replaceAll(" ","");
console.log(strReplace);
//console 결과값
"Hello,World"'Java Script > 공부 기록' 카테고리의 다른 글
| [JavaScript] 특정 값의 배열 위치(index) 찾기 (0) | 2023.08.27 |
|---|---|
| [JavaScript] DOM이란? Node와 Element의 차이점 (0) | 2023.08.25 |
| [JavaScript] Map 메소드 (1) | 2023.08.22 |
| [JavaScript] Part3 Studying - 2 (0) | 2023.08.22 |
| [JavaScript] 문자열 추출하기 (0) | 2023.08.20 |