(ASP) 대소문자 상관없이 문자열 치환하기 (빈 문자열도 가능하게 수정) ASP

Function preplace(ByRef allText, ByVal findText, ByVal replaceText)
  Dim regObj
  Set regObj = New RegExp
  nullrep = chr(127)  '검색문자에 빈문자가 포함될경우, 원래의 방법만으로는 치환이 안되기 때문에, 임시로, 공백문자 를 chr(127) 문자로 바꿔서 비교했다가 다시 되돌린다.
  
  allText  = replace(allText," ",nullrep)
  findText = replace(findText," ",nullrep)
  replaceText = replace(replaceText," ",nullrep)
  
  regObj.Pattern = findText     '패턴 설정
  regObj.IgnoreCase = True      '대소문자 구분 여부
  regObj.Global = True          '전체 문서에서 검색
  rslt = regObj.Replace(allText, replaceText)
  
  preplace = replace(rslt,nullrep," ")
  
  set regObj=nothing
End Function
----------------------------------------------
기존에 이와 관련한 포스팅을 쓴적이 있는데, 포스팅 한 줄도 모르고 웹을 찾아 헤매다가 결국 내 블로그에 글을 쓴적이 있다는걸 알게되는 황당함.
아무튼, 기존에 이와 비슷한 포스팅을 한적이 있는데, 막상 사용하려고 하니 문제점이 발견되었다.
검색하려는 문자열에 빈문자가 붙어 있는 경우 동작하지 않았다.
따라서, 이런 경우에는, 함수에서 검색어의 빈문자를 잠시 다른 문자로 치환했다가 작업이 끝난후 다시 되돌려 주는 작업이 필요할것 같아서 내용을 추가했다.
위의 코드에서 보듯이, 빈 문자열이 있는 경우를 감안해서,
전체 텍스트와 검색텍스트, 그리고 치환할 텍스트의 빈 문자열이 있다면, 우선 chr(127) 문자로 바꾼다.
치환작업이 끝난후, 다시 chr(127) 문자를 빈 문자 로 바꿔서 내보낸다.

붙임1.
코드 작성중 잠시 착각한 부분이 있어 수정함.


덧글

댓글 입력 영역
* 비로그인 덧글의 IP 전체보기를 설정한 이글루입니다.


통계 위젯 (화이트)

21617
4671
11048151

google_myblogSearch_side

▷검색어

Flag Counter style2