문자열(String)

최경락 (K_ROCK_)·2021년 11월 10일
0
post-thumbnail

문자열을 다루는 속성과 메소드

[index]

  • 문자열[n]로 사용한다.
  • 배열처럼 문자열의 n번째 글자를 선택하여 반환 받을 수 있다.
    → 다른 것들과 동일하게 0부터 인덱싱한다.
str = '가나다라마'
str[0] // 가
str[3] // 라
  • 그러나 문자열은 읽기 전용으로, 배열처럼 데이터를 할당하는 것은 불가능하다.
  • 위처럼 대괄호를 이용하여 정보를 얻는 것을 괄호표기법 braket notation 이라고 한다.

문자열끼리의 더하기(+)

  • 문자열은 + 연산자를 이용하여 문자열끼리 더할 수 있는데, 이를 이용하여 문자열 끼리 더할 경우 이어진 하나의 문자열이 된다.
str1 = '안녕'
str2 = '하세요'

str1 + str2 // '안녕하세요'
'안녕' + '하세요' // 변수에 지정안해도 더해진다.
  • 만약 문자열과 다른 자료형을 더하더라도 문자열로 치환(형변환)되어 이어진다.
1000 + '1000' // 2000 이 아닌, '10001000' 이 된다.
true + 'false' // 'truefalse'
  • 이렇게 1000원을 100만천원으로 만들었다.

.length

  • 문자열.length로 사용한다.
  • 대상 문자열의 길이를 반환한다.
'안녕하세요'.length // 5를 반환한다.

.indexOf()

  • 문자열.indexOf(찾고자 하는 문자열)로 사용한다.
  • 대상 문자열에서 인자로 사용된 내가 찾고자하는 문자열의 위치를 가져온다
  • 대상의 위치를 숫자로 반환하며, 만약 찾고자하는 내용이 없는 경우에 -1 을 반환한다.
  • 만약 단어가 중복되는 경우 첫 단어의 위치를 반환한다.
str = 'abc가다나'

str.indexOf('b') // 1
str.indexOf('가다나') // 3
str.indexOf('123') // -1, 해당하는 단어가 존재하지 않는다

→ 뒤에서 부터 검색하는 lastIndexOf()도 있다.

  • 위와 비슷한 메소드로 includes() 가 있으며, 이는 값을 불리언으로 반환하고, 구형브라우저에서는 지원하지 않는다.
'가나다라마'.includes('가') // true
'가나다라마'.includes('B') // false

.split()

  • 문자열.split(분리할 기준이 되는 문자열) 로 사용한다.
  • 인자로 분리할 기준이될 문자열을 지정하면 문자열을 기준에 맞게 분리하여 배열의 형태로 반환한다.
str = '안 녕 하 세 요'
str.split(' ') // ['안','녕','하','세','요']
// 공백을 기준으로 잘라낸다.
  • .split()csv 파일을 처리하는데 유리하다.
  • csv 파일은 comma separated value 의 약어로, 쉼표로 나뉘어진 값을 의미하며, 주로 엑셀에서 주로 볼 수 있다.
  • →이러한 csv파일을 처리할 때는 먼저 줄바꿈을 기준으로 문서를 큰 배열로 나누고, 다시 쉼표기준으로 작은 데이터로 나누는 것이 데이터를 처리하기 용이하다.

.substring(n, n)

  • 문자열.substring(찾을 문자열의 시작위치, 끝위치) 으로 사용한다.
  • 숫자로 문자열의 위치를 지정하여 특정한 위치의 문자열을 찾을 수 있는 메소드.
str = '가나다라마바사'
str.substring(2, 5) // '다라마'
str.substring(2, 0) // '가나', 거꾸로 해도 된다...
  • 첫번째 인자에는 시작할 위치를, 두번째 인자에는 끝의 위치를 작성하면 해당 문자열에서 원하는 위치의 문자열을 반환한다.
  • 하지만 이 때, 지정된 끝 위치의 문자는 제외하고 반환한다. (위의 예시를 참고)
  • 이와 유사한 메소드로 slice() 가 있으며, 둘은 약간의 차이가 있다.

대소문자 변환하기

  • .toUpperCase(문자열) , .toLowerCase(문자열) 로 사용하고, 각각 문자열을 전부 대문자 / 소문자로 바꾼다.
  • 여기서 해당 함수는 immutable한 함수인데, 이는 원본은 변하지 않고, 리턴되는 값만 변화하는 함수를 뜻한다.
    (immutable : 불변)

immutable 과 mutable

  • immutable은 원본을 변화시키지 않으며 리턴되는 값만 변화 시키므로, 만약 이뮤터블 메소드를 통해 원본을 바꾸고 싶다면 해당 변수에 다시 할당 하는 방법 밖에 없다.
  • mutable 은 이와 반대로 원본이 변화하므로, 변화를 고려하여 사용해야한다.

번외

substring() 와 slice()의 차이

  • 먼저, substring() 의 경우 입력되는 값이 음수 인 경우에 이는 0으로 취급 되며, 작은 값은 자동으로 시작 지점이 되고, 큰 값은 종료지점이 된다.
  • 하지만 slice() 는 값이 음수 일 때 0이 되는 것이 아니라 뒤를 시작점으로 판단하게 된다. 또한 slice() 는 문자열 뿐만 아니라 배열도 잘라 낼 수 있다는 차이가 있다.

0개의 댓글