알고리즘/JavaScript

JavaScript) 문자열을 자르는 메소드, substr, substring, slice

홍구리당당 2023. 10. 24. 00:06

0. 문자열을 잘라보자.

(참고로 문자열을 구분자 기준으로 잘라 배열로 만드는 메소드는 split 이다.)

자바스크립트에서 문자열을 자르기 위해 사용되는 메소드로는 크게 3가지가 있다.

  1. substr
  2. substring
  3. slice

세 메소드를 어떻게 쓰는 건지 잘 알아보자.

1. substr 메소드로 문자열 자르기.

string = string.substr(start, length);

substr 메소드는 파라미터가 2개이다.

  1. start 인자는 생략 불가능한 필수 파라미터이다. 시작 인덱스부터 시작해서 문자열을 자른다.

  2. length 인자는 생략 가능한 파라미터로, 생략하면 문자열 전체를 리턴, n을 쓰면 n 만큼 문자열을 자른다.

    let str = "hello javascript!";

str = str.substr(3);
console.log(str); // lo javascript!

str = str.substr(2, 7);
console.log(str); // llo jav

참고로 공백도 글자수에 포함된다.


# 2. substring 메소드로 문자열 자르기.
```js
string = string.substring(start, end);

substring 메소드는 파라미터가 2개이다.

  1. start 인자는 생략 불가능한 필수 파라미터이다. 시작 인덱스부터 시작해서 문자열을 자른다.

  2. end 인자는 생략 가능한 파라미터로, 생략하면 문자열 전체를 리턴, n을 쓰면 n번 인덱스까지 문자열을 자른다.

    let str = "hello javascript!";

str = str.substring(3);
console.log(str); // lo javascript!

str = str.substring(2, 7);
console.log(str); // llo j

주의할 점!! substring 메소드의 인자로 음수를 넣으면, 뒤에서부터 인덱싱되는 게 아니라 해당 음수 값이 0으로 바뀌어버린다. 만약 end 파라미터 위치에 음수나 0 값이 있었다면 start 파라미터와 end 파라미터의 위치가 바뀐다!!

let str = "hello javascript!";

str = str.substring(3, -1);
console.log(str); // substring(0, 3) 로 계산됨. hel 출력된다!!

str = str.substring(-4, 2);
console.log(str); // substring(0, 2) 로 계산됨. he 출력된다!!

3. slice 메소드로 문자열 자르기.

string = string.slice(start, end);

slice 메소드는 파라미터가 2개이다. substring과 기본적으로 사용 방법은 똑같다.

  1. start 인자는 생략 불가능한 필수 파라미터이다. 시작 인덱스부터 시작해서 문자열을 자른다.

  2. end 인자는 생략 가능한 파라미터로, 생략하면 문자열 전체를 리턴, n을 쓰면 n번 인덱스까지 문자열을 자른다.

    let str = "hello javascript!";

str = str.slice(3);
console.log(str); // lo javascript!

str = str.slice(2, 7);
console.log(str); // llo j


slice와 substring의 다른 점은, slice 메소드에선 인자로 음수 값을 줄 수 있다는 것이다. 그래서 뒤에서부터 문자열을 자를 때에 slice 메소드가 사용된다.
```js
let str = "hello javascript!";

str = str.slice(3, -1);
console.log(str); // lo javascript 출력된다!!

str = str.slice(-11, 8);
console.log(str); // javas 출력된다!!

하나 더 참고로...
slice 메소드에선 만약 end 인덱스가 start 인덱스보다 앞에 있을 때,
예를 들면 str.slice(3, 1) 이런 경우,
오류가 나진 않고 아무것도 출력되지 않는다.

4. 정리

  • substr 메소드는 특정 길이만큼 자르고 싶을 때에 사용하자.
  • substring 메소드의 인자로 음수를 주지 말자.
  • slice 메소드의 인자로는 음수 값을 줄 수 있다.