인덱스로 접근
문자열에서 인덱스로 접근하는 방법은
[] 와 charAt 이 있는데
[]는 반환할 글자가 없을 때 undefined, chatAt은 빈문자열을 반환하는 차이점이 있다.
유니코드 표현
\uXXXX : UTF-16 인코딩 규칙을 사용한 유니코드
\u{X…XXXXXX}(한 개에서 여섯 개 사이의 16진수 글자) : UTF-32로 표현한 유니코드
문자열의 불변성
문자열의 중간글자를 수정할 수 없다.
새로 만드는 방법을 사용해야한다.
let str = 'Hi';
str[0] = 'h'; // Error: Cannot assign to read only property '0' of string 'Hi'
alert( str[0] ); // 동작하지 않습니다.
indexOf
문자열에서 특정 문자열의 index를 반환한다. 없는 경우 -1 을 반환한다.
let str = "Widget with id";
console.log(str.indexOf("with")); // 7 or -1
indexOf의 특징은 반복문을 돌렸을때, 다음 값을 찾는다는 점이다.
그래서 문장내 모든 문자열을 검사할 수 있다.
let str = "As sly as a fox, as strong as an ox";
let target = "as";
let pos = -1;
while ((pos = str.indexOf(target, pos + 1)) != -1) {
alert( `위치: ${pos}` );
}
주의해야할 점은 숫자 0 인덱스가 나오면 falsy한값이기 때문에 조건절에서 명확히 -1 로 검증해주어야 한다.
let str = "Widget with id";
if (str.indexOf("Widget")) {
alert("찾았다!"); // 의도한 대로 동작하지 않습니다.
}
let str = "Widget with id";
if (str.indexOf("Widget") != -1) {
alert("찾았다!"); // 의도한 대로 동작합니다.
}
includes
문자열이 있는지 확인합니다.
두번째 인자로, 특정 인덱스 이후부터 검사할 수도 있습니다.
let str = "Widget with id";
console.log(str.includes("with")); // true
startsWith, endsWith
문자열의 시작과, 끝을 검사합니다.
alert( "Widget".startsWith("Wid") ); // true, "Widget"은 "Wid"로 시작합니다.
alert( "Widget".endsWith("get") ); // true, "Widget"은 "get"으로 끝납니다.
문자열 <-> 유니코드
문자열에서 유니코드로 변환하는 메서드가있고,
유니코드에서 문자열으로 변환하는 함수가있다.
console.log("ab".codePointAt()); // 97
console.log("ab".charCodeAt()); // 97
console.log(String.fromCodePoint(97)); // 'a'
이런식으로 유니코드를 활용해서 문자열을 추출해낼 수 있다.
let str = "";
for (let i = 97; i < 123; i++) {
str += String.fromCodePoint(i);
}
console.log(str);
알고리즘 문제를 많이 풀다보니 문자열다루는 법을 많이 익혔었다.
그런데 어느순간 정규식에 익숙해지다보니, 메서드로 간단하게 해결할 수 있는 것들도 있어서 활용하면 좋을 것 같다는 생각이 들었다.
반응형
'Archive' 카테고리의 다른 글
map과 객체 (0) | 2022.08.30 |
---|---|
자바스크립트 배열과 객체 (0) | 2022.08.30 |
자바스크립트에서 숫자 (0) | 2022.08.29 |
원시값의 메서드 (0) | 2022.08.29 |
new 연산자와 생성자 함수 (0) | 2022.08.29 |