javascript 정규 표현 식 과 문자열 RegExp and String(2)

이 글 은 javascript 정규 표현 식 과 문자열 RegExp and String(1), 본 고 를 소개 해 관련 내용 을 계속 공유 하고 있다.
머리말
저 는 프로 그래 밍 언어 를 배 우 는 과정 에서 문자열,배열,용 기 는 매우 중요 한 부분 이 라 고 생각 합 니 다.프로 그래 밍 효율 을 높이 기 위해 저 는 문자열,배열 과 용기 에 대해 깊이 있 게 공부 하고 관련 특징 과 대응 하 는 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 '&lt';
  case '>': return '&gt';
  }
});
console.log(res); // ab&ltname&gtcd
코드 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)입 니 다.여러분 이 좋아 하 시 기 를 바 랍 니 다.

좋은 웹페이지 즐겨찾기