본문 바로가기
Archive

자바스크립트 문자열

by livemehere 2022. 8. 29.

인덱스로 접근

문자열에서 인덱스로 접근하는 방법은 

[] 와 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