오늘 웹페이지에서 대소문자를 구분하지 않는 키워드를 강조표시하는 방법에 문제가 발생했습니다. 예: 텍스트 abcaBcabCaBCabcaBCa, 키워드 bc, 대소문자를 구분하지 않는 경우 총 6개의 일치 항목이 있습니다.
그러면 웹 페이지에 표시되는 내용은 abcaBcabCaBCabcaBCa입니다.
많은 사람들이 교체 기능을 생각합니다. 프로토타입은
바꾸기(string,find,replacewith[,start[,count[,compare]]])
문자열 필수, 문자열 표현식, 교체할 하위 문자열 포함
필수 옵션 찾기, 검색 중인 하위 문자열
교체가 필요합니다. 교체에 사용되는 하위 문자열입니다.
start 선택 사항, 하위 문자열 검색을 시작할 위치, 기본값은 1입니다.
count 선택 사항, 수행할 하위 문자열 교체 횟수, 기본값은 -1이며 가능한 모든 교체를 나타냅니다.
비교 선택, 비교 모드, 0: 이진 비교, 1: 텍스트 비교;
마지막 매개변수로 대소문자 구분 문제를 해결할 수 있지만 무엇을 바꿔야 할까요?
왜냐하면 예시에서는 bc, Bc, bC, BC를 모두 검색했지만, 이를 하나의 텍스트로 일률적으로 대체할 수는 없기 때문입니다.
따라서 Instr 기능을 사용하여 우리를 도와주세요.
일치하는 항목이 발견될 때마다 소스 문자열에서 왼쪽에서 오른쪽으로 검색합니다. 세 단계만 따르세요.
1. 일치하는 항목의 왼쪽에 문자열을 출력합니다.
2. 스타일 <span>에 일치하는 항목을 적용하고 출력합니다.
3. 이전 두 단계를 반복하여 검색이 끝날 때까지 오른쪽 문자열을 계속 검색합니다.
코드는 다음과 같습니다:
다음과 같이 코드 코드를 복사합니다.
공개 함수 HighLight(S,F)
어두움 tL,tM,tR,k
tL=
tM=
tR=S
k=instr(1,tR,F,1)
k>0일 때 수행
tL=tL & 왼쪽(tR,k-1)
tM=중간(tR,k,len(F))
tL=tL & <span style='color:red'> & tM & </span>
tR=오른쪽(tR,Len(tR)-len(F)-k+1)
k=instr(1,tR,F,1)
고리
하이라이트=tL & tR
종료 기능
호출 시 코드는 다음과 같습니다.
다음과 같이 코드 코드를 복사합니다.
tS=abcaBcabCaBCabcaBCa
tF=bc
응답.쓰기(tS)
응답.쓰기(<br/>)
응답.쓰기(하이라이트(tS,tF))
이런 식으로 처음의 예는 다음과 같습니다.
반면에 정규식을 사용하는 것이 더 편리한지 생각해 보세요. 여러 번 시도했지만 결과가 없었습니다. 어떤 전문가가 이 문제를 해결하기 위해 규칙적인 규칙을 사용하는지 살펴보겠습니다.
글을 작성한 뒤 네티즌 유공은 정규식에 대한 해결책을 제시했다. 테스트한 결과 올바른 것으로 확인되었습니다. 이제 그의 코드가 아래에 붙여 넣어졌습니다. 그에게 정말 감사드립니다.
암호
다음과 같이 코드 코드를 복사합니다.
기능 하이라이트(S,F)
희미한 정규식
regEx = 새 RegExp 설정
regEx.IgnoreCase = 참
regEx.Global = 참
regEx.Pattern = ( & F & )
HighLight = regEx.Replace(S,<span style='color:red'>$1</span>)
기능 종료
Response.write HighLight(abcaBcabCaBCabcaBCa,bc)