본문 바로가기
개발기록/자바스크립트 & jQuery

Javascript 문자열 자르기② - substr(), substring(), slice() 비교 [자바스크립트 도장깨기]

by 쎄정 2022. 5. 5.
728x90

목차

    substr()

    문자열을 특정 위치에서 원하는 길이만큼 잘라서 문자열로 리턴한다. (띄어쓰기도 포함)

     

    형식

    start : 시작위치, length : 추출글자 갯수

    const str = "applebananaorange";
    str.substr(시작위치, 길이);

     

    순차적으로 자르기

    const str = "applebananaorange";
    
    let a = str.substr(5); // apple
    let b = str.substr(0, 5); // apple
    let c = str.substr(0, 11); // applebanana

     

    특정 위치의 문자 자르기

    [순차적으로 자르기]처럼 시작위치에서 길이를 지정해서 문자를 자르는 방법도 있다

    하지만, 시작위치에 -(음수)로 지정하여 자를 수 있는 방법도 있다.

    const str = "applebananaorange";
    
    let a = str.substr(-6); // orange
    let b = str.substr(-6, 3); // ora
    let c = str.substr(-6, 4); // oran

     

    substring()

    시작위치와 끝 인덱스로 입력받는다.

    const str = "apple banana orange";
    
    let a = str.substr(6); // banana orange
    let b = str.substr(6, 6); // banana
    let c = str.substr(6, 0); // apple

     

    substr과 substring차이

    - substr은 시작인덱스번호와 몇개를 추출할지 입력한다.

    - substring은 시작 인덱스와 끝인덱스를 입력받는다.

     

    아래 예제처럼 substr은 5번 위치부터 0개의 길이만큼 자르기 때문에 빈 문자열이다.

    하지만 substring은 5번 위치부터 0번의 위치를 추출하여 'apple' 문자열을 자를 수 있다.

    const str = "apple banana orange";
    
    str.substr(5, 0); // ''
    str.substring(5, 0); // 'apple'

     

    slice()

    substring과 동일하게 자를 문자열을 시작인덱스와 끝 인덱스로 입력한다.

     

    substring()과 slice()차이

    시작인덱스 > 끝 인덱스

    - substring()은 start값과 end값을 바꿔 처리한다.

    - slice()는 빈 문자열을 출력한다.

    let str = "안녕하세요?"
    
    let slice = str.slice(1, 0);
    let substring = str.substring(1, 0);
    
    
    document.write("slice(1,0) : ", slice, '<br/>');  // ' '
    document.write("substring(1,0) : ", substring, '<br/>'); // '안'

     

    시작인덱스 < 끝 인덱스

    - substring()은 시작인데스가 음수일 경우 start를 0으로 취급한다. substring(-2, 6)는 substring(0, 6)로 계산된다.

    - slice()는 음수의 절대값 인덱스로 출력한다. slice(-2, 5)은 경우 start가 -2인 경우 문자열 뒤에서 2번쨰 자리로 취급한다. slice(4, 6)으로 계산된다.

     

    만일 문자열.length의 길이보다 시작위치의 길이가 크다면 0으로 처리한다.

     

     

    728x90
    반응형

    댓글