183. 문자열찾기

SEHEE Y00N·2023년 9월 6일

문자열 찾기

  • 특정 문자열에서 필요한 위치에 있는 문자(열)을 구한다.
  • 특정 위치부터 잘라낼 수도 있다.
  • 특정 문자를 다른 문자로 치환할 수 있다.
  • 0번째부터 시작
[보기]
let string = "ABCDEFGHIJKLMNOPQRSTUVWXDYZ"
console.lot(string.length); // (해당 문자열의 개수 = 27)

1. 특정 문자의 인덱스번호 찾기

console.log("D 위치: " + string.indexOf("D")); 
출력 : D 위치 :  3 // 처음 나오는(?) "D" 의 위치 

console.log("D 위치: " + string.lastIndexOf("D"));
출력 : D 위치 : 24 // 마지막 "D" 의 위치 

2. 특정번호로 문자 찾기

console.log("3번쨰: " + string.charAt(3));
출력 : 3번째 : D 
해설  :해당 문자열의 3(인덱스번호) 위치에 있는 문자는 "D"

3-1. X번째부터 끝까지

console.log("3~:" + string.slice(3));
console.log("3~:" + string.substring(3));
console.log("3~:" + string.substr(3));

출력 공통 : DEFGHIJKLMNOPQRSTUVWXDYZ 

3-2. X번째부터 X번째까지

console.log("3~:" + string.slice(3,5));
출력 : DE 
해설 : 3번째부터 5 미만 번째

* slice 는 배열도 자를 수 있음
let arr = [1,2,3,4,5]
console.log(arr.slice(2,4)
출력 : 3,4 
해설 : 배열.slice(behin, end) 일 시, end 의 값은 잘라낼 배열에 포함되지 않는다. 



console.log("3~:" + string.substring(3,5));
출력 : DE 
해설 : 3번째부터 5 미만 번째

console.log("3~:" + string.substr(3,5));
출력 : DEFGH 
해설 : 3번째부터 5개

4. 특정 문자를 기준으로 문자열 자르기

  • 문자 자른 후에 배열 방식으로 저장
console.log(string.split("D"));
출력: 	0: "ABC"
		1: "EFGHIJKLMNOPQRSTUVWX"
		2: "YZ"
해설 : ABC "D" EFGHIJKLMNOPQRSTUVWX "D" YZ
		"D" 를 기준으로 문자열을 자른 후에 배열 방식으로 저장한다.
     	따라서 해당 배열의 length 는 3



console.log(string.split("D")[0]);
출력 : 0: "ABC"

console.log(string.split("D")[1]);
출력 : 1: "EFGHIJKLMNOPQRSTUVWX"

console.log(string.split("D")[2]);
출력 : 2: "YZ"


let tmp = string.split("D");
console.log(tmp);
출력 : ['ABC', 'EFGHIJKLMNOPQRSTUVWX', 'YZ']

5. 문자열 바꾸기(치환) replace

console.log(string);
출력 : ABCDEFGHIJKLMNOPQRSTUVWXDYZ

consloe.log(string.replace("D","가나다"));
출력 : ABC가나다EFGHIJKLMNOPQRSTUVWXDYZ
해설 : 처음 나오는(?) "D" 를 "가나다" 로 치환한다. 

consloe.log(string.replaceAll("D","가나다"));
출력 : ABC가나다EFGHIJKLMNOPQRSTUVWX가나다YZ
해설 : 모든 "D" 를 "가나다" 로 치환한다. 

6. 전체 문자열에서 특정문자(열) (있는 지 없는 지만) 찾기

  • match - ("전체문자열").match("찾으려는 문자열")
let sp = ["android","iphone","ipad"];
let nu = navigator.userAgent;

document.write(nu)
출력 :  // Mozilla/5.0 (Windows NT 10.0; Win64; x64) 이하생략

document.write(nu.toLocaleLowerCase())
출력 : //mozilla/5.0 (windows nt 10.0; win64; x64) 이하생략
해설 : toLocaleLowerCase - 소문자로 전환


for(let i=0; i<sp.length; i++) {
     console.log(navigator.userAgent.toLocaleLowerCase().match(sp[i]))
        if(navigator.userAgent.toLocaleLowerCase().match(sp[i])) {
            console.log(i + ":"+ sp[i])
            location.replace("https://m.naver.com")
        }
    }

해설 : sp 라는 배열의 수 미만까지 i 를 1씩 더해가며 반복해라. i는 0 이므로 3번 (0,1,2) 반복할 것 
조건 : 배열[(sp) i 번째 방에 있는 데이터가 ' nu ' (navigator.userAgent) 안에 있는 지 없는 지 찾을 것 
출력 : null (없음)


console.log("여기: " + string.match("DE"))
출력 :  여기 DE
해설 : string 이라는 문자열 : ABC "DE" FGHIJKLMNOPQRSTUVWXDYZ 안에 "DE" 가 있음

0개의 댓글