1 분 소요

문자열

오늘의 예시 코드이다.

const info = "JavaScript는 프로래밍 언어이다.";
const firstChar = info.indexOf("프로래밍"); 

console.log(firstChar);

if (firstChar !== -1) { 
  info = info.slice(0, firstChar) + "프로그래밍" + info.slice(firstChar+4, info.length); 
}

console.log(info);

(console에 입력시 오류가 나는 것은 정상! 오류가 나는 원인은 조금 이따 살펴보자)

문자열에서 Text 위치 찾기

const info = "JavaScript는 프로래밍 언어이다.";
const firstChar = info.indexOf("프로래밍"); 

console.log(firstChar); // ---12
  • 문자열의 값을 가지는 info라는 변수를 선언했다.
  • firstCharinfo의 값에서 특정 text를 찾아주는 변수이다.
    대상변수.indexOf(찾을 text); → indexOf이다. 대문자 주의!
  • 위 코드에서 프로래밍은 문자열의 12번째 위치에서 등장한다. 그러므로 console.log에서 12가 출력! (첫 글자는 0이다!)

그렇다면 만약 찾을 text가 변수의 문자열에 없으면 어떻게 나올까??
0은 문자열의 첫 번째를 의미하기 때문에 0이 오면 안되는데 뭐라 나올지 궁금하니 쳐보자

const info = "JavaScript는 프로래밍 언어이다.";
const firstChar = info.indexOf("자바스크립트"); 

console.log(firstChar); // ---(-1)

-1이 출력된다!! 그렇기 때문에 예시 코드의 if 부분에서 조건을 보면 firstChar !== -1인 것은 firstChar-1이 아닐 때. 즉, firstChar에서 찾고자하는 text가 대상하는 변수에 존재할 때 이 조건이 충족되어 if가 실행된다는 것을 알 수 있다!

한 가지 더 궁금한게 생겼다. 그럼 찾고 싶은 text가 복수일 때는??

const info = "JavaScript 언어는 프로래밍 언어이고 언어이며 언어이다.";
const firstChar = info.indexOf("언어"); 

console.log(firstChar); // ---11

결과는 가장 앞에 있는 언어의 위치만을 찾아준다.

가장 앞 말고 다른 text 위치 찾기

만약 문자열에 찾고 싶은 text가 여러개라면 그 위치들을 알 방법은 없을까?? 당근 있다.

const info = "JavaScript 언어는 프로래밍 언어이고 언어이며 언어이다.";
const firstChar = info.indexOf("언어", 12); 

console.log(firstChar); // ---20

firstChar변수 선언문에서 index()의 괄호(( ))안에 (찾을 text, position)을 입력하면 입력한 position에서부터 해당 text를 찾아 위치를 알려준다. 직접 해보니 position 앞에 있는 text는 제외하지만, 위치를 나타낼 때는 전체 문자열을 기준으로 하는것 같다.

댓글남기기