LHJ

I'm a FE developer.

9-8. String 오브젝트 / 문자열 추출

26 Nov 2020 » js_beginner

9-8. String 오브젝트 / 문자열 추출

substring()

구분데이터(값)
data변환 대상
파라미터첫번째 파라미터 : 시작 인덱스
두번째 파라미터 : 끝 인덱스
반환결과

  • 파라미터의 시작 인덱스부터 끝 인덱스 직전까지 반환

      var value = "01234567";
      console.log(value.substring(2, 5)); // 234
    
    1. 2번 인덱스부터 5번 인덱스 직전까지 반환
  • 두번째 파라미터를 작성하지 않으면 반환 대상의 끝까지 반환

      var value = "01234567";
      console.log(value.substring(5)); // 567
      console.log(value.substring()); // 01234567
    
    1. 첫번째 파라미터만 작성하면 첫번째 인덱스부터 끝까지 반환
    2. 파라미터를 모두 작성하지 않으면 전체 반환
  • 다양한 추출 조건 작성

      var value = "01234567";
      console.log(value.substring(5, 20)); // 567
    
    1. 두번째 파라미터 값이 전체 length 보다 크면 전체 문자열 length 사용
    2. 따라서 시작 인덱스부터 끝까지 반환
      var value = "01234567";
      console.log(value.substring(-7, 2)); // 01
      console.log(value.substring(5, 1)); // 1234
      console.log(value.substring(5, "A")); // 01234
    
    1. 파라미터 값이 음수이면 0으로 간주
      0번 인덱스부터 2번 인덱스 직전까지 반환
    2. 첫번째 파라미터 값이 두번째보다 크면 파라미터 값을 바꿔서 처리
      value.substring(1, 5) 형태가 됨
    3. NaN은 0으로 간주
      첫번째 파라미터 값이 두번째보다 크므로 value.substring(0, 5) 형태가 됨

substr()

구분데이터(값)
data변환 대상
파라미터첫번째 파라미터 : 시작 인덱스
두번째 파라미터 : 반환할 문자 수
반환결과

  • 파라미터의 시작 인덱스부터 지정한 문자 수를 반환

      var value = "01234567";
      console.log(value.substr(0, 3)); // 012
    
    1. 0번 인덱스부터 문자 3개를 반환
  • 첫번째 파라미터

    • 값이 음수이면 length에서 파라미터 값을 더해 시작 인덱스로 사용

        var value = "01234567";
        console.log(value.substr(-3, 3)); // 567
      

      처음 파라미터 값이 음수이면 length 에서 처음 파라미터 값을 더해 시작 인덱스로 사용합니다.

      8 - 3 = 5

      즉, value.substr(5, 3)

  • 두번째 파라미터를 작성하지 않으면 양수 무한대로 간주

      var value = "01234567";
      console.log(value.substr(4)); // 4567
      console.log(value.substr()); // 01234567
    
    1. 두번째 파라미터를 작성하지 않으면 양수 무한대, 즉 최대값이므로
    2. 첫번째 파라미터부터 전체 반환
    3. 첫번째 파라미터를 작성하지 않으면 0으로 간주
      따라서 전체가 반환됩니다.

slice()

구분데이터(값)
data변환 대상
파라미터첫번째 파라미터 : 시작 인덱스
두번째 파라미터 : 끝 인덱스
반환결과

  • 파라미터의 시작 인덱스부터 끝 인덱스 직전까지 반환

      var value = "01234567";
      console.log(value.slice(1, 4)); // 123
      console.log(value.slice(false, 4)); // 0123
    
    1. 1번 인덱스부터 4번 인덱스 직전까지 반환
    2. false, undefined, null, 빈문자열은 0으로 간주
  • 첫번째 파라미터

    • 값을 작성하지 않거나 NaN이면 0으로 간주

        var value = "01234567";
        console.log(value.slice("A")); // 01234567
        console.log(value.slice()); // 01234567
      
      1. 첫번째 파라미터가 NaN이면 0으로 간주
      2. 파라미터를 모두 작성하지 않으면 전체 반환
  • 두번째 파라미터

    • 작성하지 않으면 length 사용

        var value = "01234567";
        console.log(value.slice(5)); // 567
        console.log(value.slice(5, 3)); // ""
      
      1. 두번째를 작성하지 않으면 length 사용
      2. 첫번째가 두번째보다 크거나 같으면 빈문자열

      substring()은 첫번째가 두번째보다 크거나 같으면 첫번째, 두번째 서로 바꿔서 실행했는데 slice는 그렇지 않다.

    • 값이 음수이면 length에 더해 사용

        var value = "01234567";
        console.log(value.slice(4, -2)); // 45
        // value.slice(4, -2 + 8);
        // value.slice(4, 6);
        // 45
        console.log(value.slice(-5, -2)); // 345
        // value.slice(-5 + 8, -2 + 8);
        // value.slice(3, 6);
        // 345
        console.log(value.slice(-2, -5)); // ""
        // value.slice(6, 3);
        // ""
      
  1. 파라미터 값이 음수라면 length 를 더해 사용.
    더한 값이 0보다 작으면 0을 사용
  2. 3개의 결과에 대한 논리를 설명하세요.