모든 String
인스턴스는 String.prototype
으로부터 메소드와 프로퍼티를 상속받습니다.
이렇게 상속받은 String.prototype
메소드를 이용하면, 다음과 같은 문자열 작업을 할 수 있습니다.
문자열에서의 위치 반환
문자열 추출
문자열 분리
문자열 결합
문자열의 대소문자 변환
문자열 주위의 공백 제거
정규 표현식을 이용한 문자열 조작
이 메소드들은 문자열을 찾기 시작할 String
인스턴스의 위치를 두 번째 인수로 전달할 수 있습니다.
만약 전달받은 특정 문자나 문자열을 찾을 수 없을 때는 -1을 반환합니다.
indexOf();
해당하는 인덱스 값을 문자열 앞 에서부터 찾습니다.lastIndexOf();
해당하는 인덱스 값을 문자열 뒤 에서부터 찾습니다ex)
let str = 'abcDEFabc'; str.indexOf('abc'); // 0 -> 자바스크립트에서 인덱스는 0부터 시작함. str.indexOf('abcd'); // -1 -> 문자열을 비교할 때 문자의 대소문자를 구분함. str.indexOf('abc', 3); // 6 -> 인덱스 3부터 'abc'를 찾기 시작함. str.lastIndexOf('abc'); // 6 str.lastIndexOf('d'); // -1 str.lastIndexOf('c'); // 8
String
인스턴스에서 전달받은 시작 인덱스부터 종료 인덱스 바로 앞까지의 문자열만을 추출하여 만든 새로운 문자열을 반환합니다.
-slice();
-substring();
-substr();
ex)
let str = 'abcDEFabc'; str.slice(2,6); // cDEF -> 인덱스 2부터 인덱스 5까지의 문자열을 추출합니다. str.slice(-4, -2); // Fa -> 음수로 전달된 인덱스는 문자열의 뒤에서부터 시작함. str.slice(2); // cDEFabC 인덱스 2부터 끝을 지정안해주면 마지막 값까지 추출한다. str.substring(2.6); // cDEF str.substr(2, 4); // cDEF
slice
(start index, end) slice
는 start index
시작부분부터 end
까지 추출한다. 단! start index 값이 end 값보다 작아야 한다.(start < end)
또한 start index
값만 있을시 end
값 은 문자열 끝부분 지정된다.
ex)
let str = 'abcdef' //slice를 이용해서 de를 얻고 싶을떄 str.slice(4,6) // de
substring
(start index
, end
) substring
도 slice
와 마찬가지로 start index
부터 end
값 까지 자른다. 하지만 slice
와 다른점은 start index 값이 end 값보다 크면 start와 end 값을 반전한다.(start > end)
ex)
let str = 'abcdef' str.slice(4,2) // '' 빈 문자열을 반환한다. str.substring(4,2) // cd start 값이 end값보다 크므로 반전 str.substring(2,4) // cd 위의 값과 동일하다.
substr(start index, length)
은 start index
에서부터 length
길이만큼 자릅니다.
ex)
let str = 'abcdef' str.substr(2,2) // cd
다음 메소드는 String
인스턴스를 구분자(separator)를 기준으로 나눈 후, 나뉜 문자열을 하나의 배열로 반환합니다.
- split()
split()
메소드는 인수로 구분자를 전달하지 않으면, 전체 문자열을 하나의 배열 요소로 가지는 길이가 1인 배열을 반환합니다.
ex)
let str = '아아 빨리 코딩을 잘하고 싶다. 제발!'; str.split(); // 입력 값이 없으면 그대로 출력"아아 빨리 ..." str.split(''); // (21) 한 문자씩 출력 "아", "아", " ", "빨", "리" ... str.split(' '); // (6) 띄어쓰기 를 기준으로 나눔 "아아", "빨리", "코딩을" ... str.split('.'); // (2) .를 기준으로 나눔 "아아 빨리 코딩을 잘하고 싶다", " 제발!"
다음 메소드는 String
인스턴스에 전달받은 문자열을 결합한 새로운 문자열을 반환합니다.
-concat()
ex)
let str = '아아 빨리'; str.concat('코딩을 잘하고 싶다.') // 아아 빨리 코딩을 잘하고 싶다. str.concat(' 제발!'); // 아아 빨리 코딩을 잘하고 싶다. 제발!
다음 메소드는 String
인스턴스의 모든 문자를 대문자나 소문자로 변환한 새로운 문자열을 반환합니다.
- toUpperCase()
- toLowerCase()
ex)
let str = 'JavaScript' str.toUpperCase(); // JAVASCRIPT str.toLowerCase(); // javascript
다음 메소드는 String
인스턴스의 양 끝에 존재하는 모든 공백과 줄 바꿈 문자(LF, CR 등)를 제거한 새로운 문자열을 반환합니다.
- trim()
trim()
메소드는 String
인스턴스의 문자열 값 그 자체에는 영향을 주지 않습니다.
ex
let str = ' JavaScript '; str.trim(); // JavaScript