Develop/JAVASCRIPT

자바스크립트 기초 - 문자열(slice, substring, replace, split, 정규식, 문자열 길이 맞추기, 인코딩, 디코딩)

걸어다니는 종합병원 2023. 7. 31. 15:15
반응형

문자열 위치 지정하여 선택

- 지정만 문자열의 일부를 추출하고 싶을 때 사용.

- 인덱스의 시작점부터 종료 지점까지 문자열 추출, 종료 인덱스 생략시 문자열의 끝까지로 자동 지정.

 

메소드 의미 반환값
문자열.slice(시작인덱스, [종료인덱스]) 지정 범위 내 문자열 추출 문자열
문장열.substring(시작인덱스, [종료인덱스]) 지정 범위 내 문여자열 추출 문자열

 

slice()는 음의 정수도 사용할 수 있으며, 뒤에서부터 문자열을 추출한다.

시작 인덱스는 -1이다.

substring()은 음의 정수를 모두 0으로 간주하기 때문에 음의 정수를 하용할 수 없다.

'chobab12'.substring(3,-1)과 'chobab12'.substring(3,0) 은 같은 의미를 가진다.

'chobab12'.substring(-5,-4)는 'chobab12'.substring(0,0) 은 같은 의미를 가진다.

 

slice()와 substring()의 차이점

시작 인덱스가 종료 인덱스보다 클 경우에 처리 방식이 다르다.

substring()은 시작 값이 종료 값보다 클 경우 두 인덱스를 바꿔 작업을 처리 한다.

slice는 시작 인덱스가 5, 종료 인덱스를 1로 지정하면 5에서 1로 도달할 수 없기 떄문에 공백 반환

substring은 수를 뒤바꿔 큰 수를 종료 인덱스로 지정하여 추출하기 때문에 hoba가 반환.


글자 수 지정하여 선택하기

- 위치와 글자 수를 지정한 문자열을 추출하고 싶을 때 사용

메소드 의미 반환값
문자열.substr(시작인덱스, [글자수]) 지정 범위 내 문자열 추출 문자열


지정 문자열 변환하기

- 문자열을 다른 문자열로 바꾸고 싶을때

- 빈칸을 제거 하고 싶을 때

메소드 의미 반환값
대상문자열.replace(문자열1, 문자열2) 문자열1을 문자열 2로 바꾸기 문자열
대상문자열.replace(정규표현, 문자열) 정규 표현으로 문자열 바꾸기 문자열

<문자열을 이용하여 변환>
<정규식을 이용하여 변환>

정규식을 사용하지 않고 replace를 할 경우에는 가장 처음 발견되는 문자열만 변경된다.

https://developer.mozilla.org/ko/docs/Web/JavaScript/Guide/Regular_expressions

 

정규 표현식 - JavaScript | MDN

정규 표현식, 또는 정규식은 문자열에서 특정 문자 조합을 찾기 위한 패턴입니다. JavaScript에서는 정규 표현식도 객체로서, RegExp의 exec()와 test() 메서드를 사용할 수 있습니다. String의 match(), matchA

developer.mozilla.org


문자열 나누기

- 문자열을 나눠서 보고 싶을때

- 배열로 반환된다.

메소드 의미 반환값
문자열.split([기준문자],[최대분할수]) 지정 범위 내 문자열 반환 문자열
문자열.split([정규표현],[최대분할수]) 지정 범위 내 문자열 반환 문자열

<split을 이용한 문자열 나누기>
<split을 이용한 문자열 나누기>

인수에 공백('')을 지정하면 한 글자 단위로 나눠진다.

인수를 생략하면 첫 번째 배열에 모든 문자열이 저장됨.

 


문자열 합치기

- 문자를 결합하여 문자열을 만들고 싶을때

메소드 의미
문자열1 + 문자열2 + 문자열3 + ..... 문자열1에 문자열2, 문자열3을 결합
`${문자열1}${문자열2}${문자열3}` 문자열1, 2, 3을 결합

<문자열 합치기>

대입 연산자 +를 이용해서 문자열을 결합

템플릿 문자열(백틱)인 ``(키보스 숫자 1 왼쪽에 있음)을 사용해서도 문자열 결합 가능.


문자열 대소문자 변환

- 소문자에서 대분자로 변환하고 싶을 때

- 대문자를 소문자로 변환하고 싶을 때

메소드 의미 반환값
문자열.toLowerCase() 문자열을 소문자로 변환 문자열
문자열.toUpperCase() 문자열을 대문자로 변환 문자열

<대소문자 변환>

어떤 값이 대소문자 여부를 확인할 수 없는 경우에 사용하면 유용하다.


문자열과 식 함께 다루기

- 여러 문자열을 다루고 싶을 때

- 문자열 내 변수를 다루고 싶을 때

메소드 의미
문자열1 + 문자열2 + 문자열3 + ..... 문자열 결합
`${문자열1}${문자열2}${문자열3}` 문자열 결합, 변수 이용

<문자열 식 함께 다루기>

문자열과 변수를 추가할 때마다 + 연산자를 사용하면 번거롭고, 가독성이 떨어짐

백틱(``)을 이용하면 간편히 문자열이나 식을 삽일할 수 있다.


정규 표현식 사용하기

- 조건에 따라 문자열을 검색하고 싶을 때- 패턴에 따라 일괄 변화 하고 싶을 때

패턴 의미
x 문자 x
xyz 문자열 xyz
[xyz] x, y, z 중 하나의 문자
[a-z] a ~ z 중 하나의 문자,  [A-Za-z] 대소문자도 가능 
[^xyz] x, y, z 외 하나의 문자
[^a-z] a~z 외 하나의 문자
abc|xyz 문자열 abc 혹은 xyz
{숫자} 반복 횟수
^x 시작 문자 x
x$ 종료 문자 x
. 하나의 문자(줄바꿈 코드 제외)
x* 0개 이상 계속되는 x
\ 다음에 오는 문자를 이스케이프 처리
\d 숫자 [0-9]
\D 숫자가 아닌 문자 [^0~9]
\w 영문, 숫자, 언더바 [A-Za-z0-9]
\s 공백 문자(스페이스, 탭, 줄바꿈 등)
\S 공백 문자 이외의 문자 [^\s]
\t 수평 탭
\n 줄바꿈 코드


정규 표현식으로 특정 문자 검색

메소드 의미 반환값
/패턴/.test(문자열) 문자열과 패턴의 일치 여부 확인 boolean

패턴을 사용하면 전화번호 처럼 특정 패턴 정보를 확인하기 쉽다.


소수점 자릿수 지정

- 숫자 3.14159265를 3.14로 변경할 때

- 숫자 123을 123.00으로 변경하고 싶을 때

 

메소드 의미 반환값
숫자값.toFixed([자릿수]) 소수점 이하 자릿수 지정 문자열
숫자값.toPrecision([자릿수]) 자릿수 지정 정밀도 반환 문자열

※ 자릿수 생략 시 0

<toFixed 예제>

소수점 이하의 자릿수가 줄어들 경우 값을 근사치로 변환.

소수점 이하의 자릿수가 늘어날 경우 0으로 채워짐

 

<toPrecision 예제>

들어온 값을 지정한 자릿수의 정밀도로 변환하여 문자열을 반환.

toFixed()와 같이 자릿수가 늘어나면 근사치 변환, 줄어들면 0으로 채워 넣는다.


문자열 길이 맞추기

- 10 미만의 숫자 앞에 0을 붙여 두자리 형식으로 만들고 싶을 때

메소드 의미 반환값
문자열.padStart(전체길이, [추가문자열]) 문자열 시작 부분에 문자열 추가 문자열
문자열.padEnd(전체길이, [추가문자열]) 문자열 끝 부분에 문자열 추가 문자열

<문자열 맞추기>


문자열 URI Escape 처리

- URI 인코딩할 때 

메소드 의미 반환값
encodeURI(문자열) 문자열을 인코딩 문자열
encodeURIComponent(문자열) 문자열을 인코딩 문자열

URI에 한글이 포함되면 그대로 사용할 수 없기 때문에 인코딩이 필요함.

숫자 - _ . ! ~ * ' ( )

해당 표에 있는 문자열은 Escape 처리되어 인코딩되지 않는다.

<URI Escape>

encodeURIComponent()가 encodeURI()보다 Escape 처리를 하는 문자의 종류가 더 많다.

 

encodeURI()가 Escape 처리하지 않는 문자로는 아래 표의 문자열이다.

/ ? & = + : @ $ ; , #

문자열 URI Decode 처리

- 인코딩된 URI 문자열을 디코딩

메소드 의미 반환값
decodeURI(문자열) 문자열을 디코딩 문자열
decodeURIComponent(문자열) 문자열을 디코딩 문자열

<URI Decode>

encodeURI = decodeURI, encodeURIComponent = decodeURIComponent 로 매칭해서 사용한다.

 

slice, substring, replace, split, 정규식, 문자열 길이 맞추기, 인코딩, 디코딩

반응형