2 minute read

문자열

​ : 텍스트 데이터를 나타내는데 사용한다. 문자열을 구분하기 위해서 작은 따옴효(‘‘)나 큰 따옴표(“”) 또는 백틱(``)으로 텍스트를 감싸 사용한다.

* 문자열은 string, 문자 하나는 character이며, char이라는 축약어로도 사용한다. char가 포함된 메소드도 있다.

  • Length 프로퍼티

    문자열의 문자 개수를 반환한다.

    'Hello'.length;    // -> 5
    '안녕하세요!'.length; // -> 6
    
  • String 매서드

    • indexOf

      indexOf 매서드는 대상 문자열에서 인수로 전달받은 문자열을 검색해 첫 번째 인덱스를 반환한다. 검색에 실패하면 -1을 반환한다.

      const str = 'Hello World';
          
      // 문자열 str에서 'l'을 검색하여 첫 번째 인덱스를 반환한다.
      str.indexOf('l'); // -> 2
      // 문자열 str에서 'or'을 검색하여 첫 번째 인덱스를 반환한다.
      str.indexOf('or'); // -> 7
      // 문자열 str에서 'x'를 검색하여 첫 번째 인덱스를 반환한다. 검색에 실패하면 -1을 반환한다.
      str.indexOf('x'); // -> -1
      

      indexOf 메서드의 2번째 인수로 검색을 시작할 인덱스를 전달할 수도 있다.

      // 문자열 str의 인덱스 3부터 'l'을 검색하여 첫 번째 인덱스를 반환한다.
      str.indexOf('l', 3); // -> 3
      

      indexOf 메서드는 대상 문자열에 특정 문자열의 존재 유무를 파악할 수도 있다.

      if (str.indexOf('Hello') !== -1) {
      }
        // 문자열 str에 'Hello'가 포함되어 있는 경우에 처리할 내용
      

      ES6에서 도입된 includes 메서드를 사용하면 가독성이 더 좋다.

      if (str.includes('Hello')) {
        // 문자열 str에 'Hello'가 포함되어 있는 경우에 처리할 내용
      }
          
      // includes 메서드의 2번째 인수로 검색을 시작할 인덱스를 전달할 수도 있다.
      const str = 'Hello world';
          
      // 문자열 str의 인덱스 3부터 'l'이 포함되어 있는지 확인
      str.includes('l', 3); // -> true
      str.includes('H', 3); // -> false
      
    • toUpperCase & toLowerCase

      const str = 'Hello World!';
      str.toUpperCase(); // -> 'HELLO WORLD!'
      str.toLowerCase(); // -> 'hello world!'
      
    • trim

      대상 문자열 앞뒤 공백문자가 있을 때, 이를 제거한 문자열을 반환

      const str = '   foo  ';
      str.trim(); // -> 'foo'
      
    • replace

      대상 문자열에서 첫 번째 인수로 전달받은 문자열 또는 정규표현식을 검색해 두 번째 인수로 전달한 문자열로 치환한 문자열을 반환한다.

      const str = 'Hello world';
          
      // str에서 첫 번째 인수 'world'를 검색하여 두 번째 인수 'Lee'로 치환한다.
      str.replace('world', 'Lee'); // -> 'Hello Lee'
          
      const str = 'Hello world world';
          
      // 검색된 문자열이 여럿 존재할 경우 첫 번째로 검색된 문자열만 치환된다.
      str.replace('world', 'Lee'); // -> 'Hello Lee world'
      
    • split

      대상 문자열에서 첫 번째 인수로 전달한 문자열 또는 정규표현식을 검색해 문자열을 구분한 뒤 불리된 각 문자열로 이루어진 배열을 반환.

      인수로 빈 문자열을 받으면 각 문자열을 모두 분리하고, 인수를 생략하면 대상 문자열 전체를 단일 요소로 하는 배열을 반환한다.

      const str = 'How are you doing?';
          
      // 공백으로 구분(단어로 구분)하여 배열로 반환한다.
      str.split(' '); // -> ["How", "are", "you", "doing?"]
          
      // \s는 여러 가지 공백 문자(스페이스, 탭 등)를 의미한다. 즉, [\t\r\n\v\f]와 같은 의미다.
      str.split(/\s/); // -> ["How", "are", "you", "doing?"]
          
      // 인수로 빈 문자열을 전달하면 각 문자를 모두 분리한다.
      str.split(''); // -> ["H", "o", "w", " ", "a", "r", "e", " ", "y", "o", "u", " ", "d", "o", "i", "n", "g", "?"]
          
      // 인수를 생략하면 대상 문자열 전체를 단일 요소로 하는 배열을 반환한다.
      str.split(); // -> ["How are you doing?"]
      

      split메서드는 배열을 반환한다. 따라서 reverse, join 메서드와 함께 하용하면 문자열을 역순으로 뒤집을 수 있다.

      // 인수로 전달받은 문자열을 역순으로 뒤집는다.
      function reverseString(str) {
        return str.split('').reverse().join('');
      }
          
      reverseString('Hello world!'); // -> '!dlrow olleH'
      
function getMaxNumberFromString(str) {
  let maxNum = 0;

  for (let i = 0; i < str.length; i++) {
    if (parseInt(str[i]) > maxNum) {
      maxNum = parseInt(str[i]);
    }
  }

  return String(maxNum);
}

추가로 공부해볼것

template literals ${test}