[TIL] JS/프로그래머스/가운데 글자 가져오기/문자열 자르기 함수 비교

김효진·2023년 10월 26일
0

나의 풀이

function solution(s) {
  var answer = ''
  let charNum = Math.floor(s.length / 2)

  if (s.length % 2 === 0) {
    return s.slice(charNum - 1, charNum+1)
  } else {
    answer = s[charNum]
  }
  return answer
}

다른 사람들이 푼 내용을 보니 slice 외에도 substring, substr 등을 활용해 푼 것을 보고 각 문자열 자르기 함수를 비교해보고자 공부를 했다.

문자열 자르기 함수

  1. slice(start,end): 문자열의 start 인덱스부터 end 인덱스의 전 인덱스에 대해 새로운 배열 객체로 반환한다. 만약 end 인덱스를 넣지 않으면 start 인덱스부터 끝 인덱스까지 반환한다.
const animals = ['ant', 'bison', 'camel', 'duck', 'elephant'];

console.log(animals.slice(2));
// Expected output: Array ["camel", "duck", "elephant"]

console.log(animals.slice(2, 4));
// Expected output: Array ["camel", "duck"]
  1. substr(start,num): 문자열의 start 인덱스 부터 num 숫자 만큼 반환함. 만약 num을 넣지 않으면 start 인덱스부터 끝 인덱스까지 반환한다.
const str = 'Mozilla';

console.log(str.substr(1, 2));
// Expected output: "oz"

console.log(str.substr(4,1));
// Expected output: "l"


console.log(str.substr(2));
// Expected output: "zilla"
  1. substring(start,end): 문자열의 start 인덱스로 부터 end 인덱스 전 까지 문자열의 부분 문자열을 반환한다.
const str = 'Mozilla';

console.log(str.substring(1, 3));
// Expected output: "oz"

console.log(str.substring(2));
// Expected output: "zilla"

그런데 slice와 substring의 설명이 같아서 차이점을 알아봤다.

차이점

  1. start > end 일 때 :
    substring은 start > end일 때, start와 end의 위치를 바꿔서 결과를 계산한다. 즉, substring(5, 0)은 substring(0, 5)으로 계산되는 반면
    반면에 slice는 start > end일 때 빈 문자열('')을 리턴한다.

  2. start가 음수일 때 :
    substring은 start가 음수일 때 0으로 변경되고, slice는 음수일 때 문자열 끝에서 앞쪽으로 음수만큼 이동된 Index로 계산된다.

  3. end가 음수일 때 :
    substring은 end가 음수일 때 0으로 계산되며, slice는 문자열 끝에서 앞쪽으로 이동하여 위치를 찾는다.

아래는 예제와 함께 잘 설명해 놓은 블로그 링크이다.
https://codechacha.com/ko/javascript-substring-vs-slice/

profile
더 많은 사람들이 더 좋은 정보와 서비스를 누릴 수 있게!!

0개의 댓글