indexOf()
일반적인 용도는 스트링에서 원하는 캐릭터의 인덱스값 추출이다.
var str = "산토끼 토끼야 어디를 가느냐 깡총깡총 뛰면서 어디를 가느냐"; str.indexOf("냐"); // 14 (인덱스는 0부터 시작하고 스페이스도 센다.)
분명 저 동요 마지막에도 “냐”가 있지만 처음 “냐”의 인덱스를 반환했다.
한 스트링에 여러개의 같은 캐릭터는 분명 존재한다. 이때는 어떤것을 추출하는지 모른다.
이럴대 시작 점을 지정해준다. 좀전에 14번째에 “냐”가 하나 있었으므로 그 다음으로 지정한다.
str.indexOf("냐",14); // 14 (x) str.indexOf("냐",15); // 31 (o)
저말은 두번째 “냐”는 첫번째 인덱스에 +1을 한 만큼 부터 찾을 수 있다.
str.indexOf("냐",str.indexOf("냐")+1); // 31
이 str에는 “냐”가 두개뿐인데 이 범위를 넘어서 호출하면 어떻게 될까?
str.indexOf("냐",32); // -1
-1을 반환한다.
이 조건을 이용해 해당 캐릭터가 몇개있는지 세어볼 수 있다.
var char = "냐"; var idx = -1; var sum = 0; do { idx = str.indexOf(char,idx+1); if(idx != -1) sum++; } while (idx != -1); console.log("\""+char+"\"가 "+sum+"개 있습니다."); // "냐"가 2개 있습니다.
참고) lastIndexOf() – 뒤에서부터 검색한다.
match(regexp)
물론 이와같이 특정 문자를 문자열에서 알아보는데는 match()함수를 쓰면 간단하다. (정규표현식을 사용한다)
str.match(/냐/gi); // ["냐"],["냐"] str.match(/냐/gi).length; // 2
flag
- g : 완전일치(발생할 모든 pattern에 대한 전역 검색)
- i : 대/소문자 무시
- gi : 대/소문자 무시하고 완전 일치
생략할 경우 기본값은 g
Total Views: 5717 ,