javascript 정규 표현 식 과 문자열 RegExp and String(2)
머리말
저 는 프로 그래 밍 언어 를 배 우 는 과정 에서 문자열,배열,용 기 는 매우 중요 한 부분 이 라 고 생각 합 니 다.프로 그래 밍 효율 을 높이 기 위해 저 는 문자열,배열 과 용기 에 대해 깊이 있 게 공부 하고 관련 특징 과 대응 하 는 API 를 상세 하 게 이해 합 니 다.이 글 은 자 바스 크 립 트 문자열 학습 에 대한 노트 로 필요 한 친구 와 공유 합 니 다.
사유 지도
문자열 생 성 방식
문자열 은 javascript 의 기본 형식 중 하나 입 니 다.문자열 에 대응 하 는 형식 은 String 입 니 다.두 가지 방식 으로 문자열 을 만 들 수 있 습 니 다.
변수 할당 방식 으로 문자열 의 기본 형식 을 만 듭 니 다.
구조 방법(String)을 통 해 문자열 대상 만 들 기
두 가지 방식 으로 만 든 문자열 의 표현 형식 은 다 르 지만 어떤 장면 에 서 는 문자열 이 필요 하지만 문자열 의 기본 형식 인지 문자열 대상 인지 에 대해 서 는 관심 이 없습니다.이런 장면 에서 문자열 의 판단 에 약간의 변화 가 생 길 수 있다.
구체 적 으로 아래 코드 를 참조 하여 깊이 이해 할 수 있 습 니 다.
var s = 'abcd1234DCBA'; //
var s1 = 'abcd1234DCBA';
var s2 = new String(s); //
var s3 = new String(s);
console.log(s===s1); //true
console.log(s===s2); //false
console.log(s2===s3); //false
console.log(typeof s); // string
console.log(typeof s2); // object
//
function isString(s) {
return typeof s === 'string'
}
console.log(isString(s)); //true
console.log(isString(s2)); //false
// ( + )
function isString2(s) {
return s != null && typeof s.valueOf() === 'string';
}
console.log(isString2(s)); //true
console.log(isString2(s2)); //true
문자열 의 값 변 하지 않 는 특성문자열 은 자바 script 에서 변 하지 않 습 니 다.가 변 하지 않 는 다 는 것 은 문자열 을 만 든 후에 이 문자열 의 API 를 호출 하여 이 문자열 을 조작 하 는 것 을 말 합 니 다.이 문자열 의 원시 값 은 변 하지 않 습 니 다.호출 처리 후의 결 과 는 새로운 문자열 입 니 다.
아래 코드 를 참조 하여 깊이 이해 할 수 있 습 니 다.
var s = new String('abc');
var r = s.toUpperCase();
alert(s); // abc s
alert(r); // ABC
상용 API-문자열 캡 처문자열 을 캡 처 하지 않 고 다음 세 개의 API 를 파악 하면 됩 니 다.
slice:String.slice(N1,N2)이것 이 바로 우리 가 자주 사용 하 는 지정 한 위치(N1)에서 지정 한 위치(N2)까지 의 문자열 입 니 다.
substring:String.substring(N1,N2)이것 이 바로 우리 가 자주 사용 하 는 지정 한 위치(N1)에서 지정 한 위치(N2)까지 의 문자열 입 니 다.
substr:String.substr(N1,N2)이것 이 바로 우리 가 자주 사용 하 는 지정 한 위치(N1)에서 지정 한 길이(N2)를 자 르 는 문자열 입 니 다.
아래 코드 를 참고 하여 깊이 이해 할 수 있 습 니 다.
var s = '0123456789';
var r1 = s.substring(1); //123456789 두 번 째 매개 변 수 는 기본적으로 문자 length 입 니 다.
var r2 = s.substring(1,5); //1234
var r3 = s.substring(1); //123456789 두 번 째 매개 변 수 는 기본적으로 문자 length 입 니 다.
var r4 = s.substring(1,5); //1234
var r5 = s.substr(1); //123456789 두 번 째 매개 변 수 는 기본적으로 문자 length 입 니 다.
var r6 = s.substr(2,5); //23456
var r7 = s.substr(2,100); //23456789 두 번 째 매개 변 수 는 문자 length 보다 크 고 영향 을 받 지 않 습 니 다.
상용 API-문자열 검색
문자열 에 대한 검색 작업 은 다음 세 개의 API 를 파악 하면 됩 니 다.문자열 검색 은 다른 프로 그래 밍 언어 에서 흔히 볼 수 있 습 니 다.index Of 와 lastIndex Of 라 는 두 API 자 는 다른 프로 그래 밍 언어 에서 흔히 볼 수 있 고 이해 하기 도 쉽 습 니 다.search 에 대해 서 는 index Of 와 유사 합 니 다.입력 매개 변 수 는 검색 문자열 이 아니 라 정규 표현 식 입 니 다.정규 표현 식 의 첫 번 째 일치 하 는 색인 으로 되 돌아 갑 니 다.
구체 적 으로 다음 코드 를 참고 하여 깊이 이해 할 수 있 습 니 다.
var s = '0123abc401234';
console.log(s.indexOf('23')); // 2
console.log(s.lastIndexOf('23')); // 10
console.log(s.search(/[a-z]+/g)); // 4
상용 API-문자열 교체JS 에 서 는 문자열 의 일부 문 자 를 대체 하기 위해 replace 방법 을 사용 합 니 다.이 방법 은 두 개의 인 자 를 받 습 니 다.
*첫 번 째 매개 변 수 는 바 꿀 하위 문자열 을 설명 하 는 데 사 용 됩 니 다.매개 변 수 는 문자열 일 수도 있 고 정규 표현 식 일 수도 있 습 니 다.문자열 이 라면 원 문자열 의 첫 번 째 일치 하 는 하위 문자열 만 바 꿀 수 있 으 며,'g'라 는 정규 표현 식 이 설정 되 어 있 지 않 으 면 바 꿀 때 나 오 는 결과 도 같 습 니 다.일치 하 는 하위 문자열 을 모두 바 꾸 려 면 표지 g 가 있 는 정규 표현 식 을 입력 해 야 합 니 다.
*두 번 째 매개 변 수 는 교체 값 을 설명 하 는 데 사 용 됩 니 다.매개 변수 형식 은 문자열 일 수도 있 고 함수 일 수도 있 으 며 특수 시퀀스 문자(RegExp 의 정적 속성:−/&/'/'/1.n/$등)를 포함 할 수도 있 습 니 다.
구체 적 으로 아래 코드 를 참조 하여 깊이 이해 할 수 있 습 니 다.
코드 1.기본 일치 동작
var s = 'cat,bat,sat,fat';
var res = s.replace('at','NE');
console.log(res);//cNE,bat,sat,fat
var res1 = s.replace(/at/,'NE');
console.log(res1); //cNE,bat,sat,fat
var res2 = s.replace(/at/g,'NE');
console.log(res2); //cNE,bNE,sNE,fNE
코드 2.두 번 째 매개 변 수 는 함수 입 니 다.
var s = 'ab<name>cd';
// HTML < >
var res = s.replace(/[<>]/g,function(match,index,souStr) {
switch(match) {
case '<': return '<';
case '>': return '>';
}
});
console.log(res); // ab<name>cd
코드 3.특수 시퀀스 문자 가 유연 하 게 교 체 됩 니 다.
// sou, key {}
function strong(sou,key) {
var re = new RegExp('('+key+')','g');
return sou.replace(re,'{$1}'); //$1
}
console.log(strong(s,'at')); //c{at},b{at},s{at},f{at}
// sou, key {}
function strong2(sou,key) {
var re = new RegExp(key,'g');
return sou.replace(re,'{$&}'); //$&
}
console.log(strong2(s,'at')); //c{at},b{at},s{at},f{at}
상용 API-문자열 그룹JS 에 서 는 split 방법 으로 문자열 을 묶 습 니 다.이 방법 은 두 개의 인 자 를 받 을 수 있 습 니 다.
*첫 번 째 매개 변 수 는 구분자 로 문자열 형식 일 수도 있 고 RegExp 대상 일 수도 있 습 니 다.
*두 번 째 매개 변 수 는 선택 할 수 있 습 니 다.수신 그룹의 수량,즉 결과 배열 의 크기 를 되 돌려 주 는 것 입 니 다.이 인 자 를 지정 하지 않 으 면 모든 그룹 으로 돌아 가 는 것 을 표시 합 니 다.
구체 적 으로 아래 코드 를 참조 하여 깊이 이해 할 수 있 습 니 다.
var s = 'cat,bat,sat,fat';
var res = s.split(',');
console.log(res); //[ 'cat', 'bat', 'sat', 'fat' ]
var res2 = s.split(/,/);
console.log(res2); //[ 'cat', 'bat', 'sat', 'fat' ]
var res3 = s.split(/,/,2);
console.log(res3); //[ 'cat', 'bat' ] 2
상용 API-문자열 일치match()방법 은 문자열 stringObject 를 검색 하여 regexp 와 일치 하 는 텍스트 를 하나 이상 찾 습 니 다.이 방법의 행 위 는 어느 정도 regexp 에 표지 g 가 있 는 지 여부 에 달 려 있다.
regexp 에 플래그 g 가 없 으 면 match()방법 은 stringObject 에서 한 번 만 일치 할 수 있 습 니 다.일치 하 는 텍스트 를 찾 지 못 하면 match()는 null 로 돌아 갑 니 다.그렇지 않 으 면 찾 은 일치 하 는 텍스트 와 관련 된 정 보 를 저장 하 는 배열 로 돌아 갑 니 다.이 배열 의 0 번 째 요 소 는 일치 하 는 텍스트 를 저장 하고 나머지 요 소 는 정규 표현 식 의 하위 표현 식 과 일치 하 는 텍스트 를 저장 합 니 다.이러한 일반적인 배열 요 소 를 제외 하고 돌아 오 는 배열 에는 두 개의 대상 속성 이 포함 되 어 있다.index 속성 성명 은 문자열 Object 에 있 는 텍스트 의 시작 문자 와 일치 하 는 위치 입 니 다.input 속성 성명 은 stringObject 에 대한 참조 입 니 다.
regexp 에 플래그 g 가 있 으 면 match()방법 은 전역 검색 을 실행 하고 stringObject 의 모든 짝 짓 기 문자열 을 찾 습 니 다.일치 하 는 하위 문자열 을 찾 지 못 하면 null 로 돌아 갑 니 다.하나 이상 의 짝 짓 기 문자열 을 찾 으 면 배열 로 돌아 갑 니 다.그러나 전역 적 으로 일치 하 는 배열 의 내용 은 전자 와 크게 다 릅 니 다.배열 요소 에는 stringObject 의 모든 일치 하 는 하위 문자열 이 저장 되 어 있 고 index 속성 이나 input 속성 도 없습니다.
메모:전역 검색 모드 에서 match()는 하위 표현 식 과 일치 하 는 텍스트 정 보 를 제공 하지 않 고 모든 하위 문자열 의 위 치 를 설명 하지 않 습 니 다.이 전역 검색 정보 가 필요 하 다 면 RegExp.exec()를 사용 하 십시오.
구체 적 으로 다음 코드 를 참조 하여 깊이 이해 할 수 있 습 니 다.
var s = 'cat,bat,sat,fat';
var reg = /[a-z](at)/ ;
console.log(s.match(reg)); //[ 'cat', 'at', index: 0, input: 'cat,bat,sat,fat' ]
var res = s.match(/[a-z](at)/g);
console.log(res); //[ 'cat', 'bat', 'sat', 'fat' ]
상용 API-문자열 비교두 가지 비교 방식 중 하 나 는 기호 보다 크 거나 작은 것 이 고 다른 하 나 는 locale Compare 방법 을 사용 하 는 것 이다.이 방법 이 돌아 오 는 것 은 하나의 숫자 이 고 숫자의 의 미 는 다른 프로 그래 밍 언어 와 비교 결과 가 유사 하 며 너무 많은 해석 을 하지 않 는 다.관련 된 영역 과 관련 하여 locale Compare 를 사용 하여 문자열 을 비교 하 는 것 을 추천 합 니 다.
구체 적 으로 아래 코드 를 참조 하여 깊이 이해 할 수 있 습 니 다.
var s1 = 'abc';
var s2 = 'bcd';
var s3 = new String('abc');
console.log(s1>s2); //true
console.log(s1==s3); //true s1 s3.toString()
console.log(s1.localeCompare(s2)); // -1 s1 s2
console.log(s1.localeCompare(s3)); // 0 s1 s3
이상 의 내용 은 본 고 에서 공유 한 자바 script 정규 표현 식 과 문자열 RegExp and String(2)입 니 다.여러분 이 좋아 하 시 기 를 바 랍 니 다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
[2022.04.19] 자바스크립트 this - 생성자 함수와 이벤트리스너에서의 this18일에 this에 대해 공부하면서 적었던 일반적인 함수나 객체에서의 this가 아닌 오늘은 이벤트리스너와 생성자 함수 안에서의 this를 살펴보기로 했다. new 키워드를 붙여 함수를 생성자로 사용할 때 this는...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.