[JavaScript] String

Steve·2021년 4월 7일
0

웹개발 코스

목록 보기
2/59

문자열 (String)

let str = 'Apple';

str[0]; // 문자열을 index로 접근, 수정은 불가 (read-only), 'A'
str[0] = 'B'; // 실행되지 않는 명령이지만 에러가 나지 않는다.
console.log(str) // 'Apple'

string '+' operator

let a = 'ap';
let b = 'ple';
let c = 1;

// string + string = string
// string + number, number + string = string
// .concat() 메소드와 동일하나 MDN 에서는 + 연산자가 속도면에서 빠르므로 + 사용을 권하고 있다.

a + b; // 'apple', a.concat(b) 와 같다.
a + c; // 'ap1'
a - b; // '+' 외의 다른 연산이 정의되지 않는다. NaN

여러가지 함수들

  • 모든 string 메소드는 immutable, 즉 원본을 수정하지 않는다.
let str = 'apple';

str.length; // 문자열 전체 길이 반환, 5 (문자열의 속성값 반환)

str.indexOf('p'); // 찾고자 하는 문자열의 index를 return, 1
str.lastIndexOf('p'); // 뒤에서부터 찾음, 2

'I love you'.split(' ') // seperator를 기준으로 문자열을 분리시켜 array 형태로 제공. 
// ['I', 'love', 'you']

// .split() 함수는 CSV(Comma Seperated Value) 처리할 때 유용
// \t(탭), \n(줄바꿈), \r\n (줄바꿈 옛날 방식) 등.

str.includes('a'); // 찾고자 하는 문자열의 존재유무를 return, true

str.substring(0, 2); // 시작과 끝-1 index 사이의 문자열을 return, 'ap'
str.slice(-3); // .substring() 과 동일하고 음수를 지원, 'ple'
// .substring() 은 음수 입력시 0으로 바뀜
// .slice() 은 음수 입력 시 오른쪽에서부터 1, 2, 3..

str.toLowerCase(); // 소문자로 변환된 문자열을 반환, 'apple'
str.toUpperCase(); // 대문자로 변환된 문자열을 반환, 'APPLE'

'  apple  '.trim(); // 양끝의 Whitespace(띄어쓰기) 를 제거, 'apple'

str.match(); // 정규표현식과 일치하는 문자열을 array로 제공
str.replace('p', 'z'); // substr를 newSubstr 로 교체하는 함수, 'azple'
// 최초로 찾은 문자열만 바꾼다. 
// Regular Expression 을 사용해야 모든 substr 을 newSubstr으로 바꿀 수 있다.

느낀점

  • 문자열 수정이 불가한 이유는 C 로 치면 문자열은 코드영역의 메모리를 차지하여 절대 수정되면 안되기 때문인데, 이걸 자바스크립트에서는 그냥 '이건 이렇다...' 라고 하면 상당히 이해하기가 힘들다.
  • 자바스크립트를 독학으로 공부한 적이 있었고 그때도 아리송했다. 지금 생각해보면 C++이 배우기 더 쉬웠던 것 같다. 받아들이기가 직관적이고 납득가능한 설명이 있어서 그런게 아닐까. 자바스크립트는 예외가 많고 설명이 없다. 예를 들면 문자열 수정이 불가한 이유라던가, 문자열 수정을 해도 에러를 발생시키지 않는 점이라던가... 에러를 발생시키지 않으면 개발자를 엄청 헷깔리게 만든다. 특히 초보자 입장에선...
  • 그래서 계속 느끼는거지만 자바스크립트만으로는 정말 부족한 것 같다. 물론 자바스크립트만으로도 배울건 많겠지만, 개발자로 오래 살아남으려면 로우레벨의 이해가 필수적일 것 같다. 어차피 웹브라우저는 웹브라우저 엔진(blink, webkit)으로 만들고, 그 엔진은 C++ 로 만든다는것...
  • 자바스크립트에서 변수 추적은 console.log 를 이용한다.

앞으로

  • 오늘은 PBS CS를 할 수 있을 것 같다.
profile
게임과 프론트엔드에 관심이 많습니다.

0개의 댓글