0

私はこの感覚を持っています、「男は外に出ました」。

また、ハイライトしたい4つの検索条件(角かっこは無視)があります。[went | "anWeNT o" | a|t]と[spanid= "something"][/span]です。

私はたくさんのことを試しましたが、古典的なASPでこれを行う方法がわかりません!?テキストのどこかに挿入すると、HTMLコードでSPANも検索されますが、これは不良であるか、HTMLコードが混乱しているためテキストが見つかりません。また、元のテキストのすべての位置に挿入してみましたが、理解できない魔法の正規表現を使用しても、これを機能させることはできません:-/

検索物は|で分割されます 検索するものは1から20までです。

誰かが私がこれを行う方法を解決するのを手伝ってもらえますか?

4

1 に答える 1

1

私はいくつかのコードを見つけて微調整しましたが、それは私にとって完璧に機能します:

Function highlightStr (haystack, needles)

' Taken (and tweaked) from these two sites:
' http://forums.aspfree.com/asp-development-5/asp-highlight-keywords-295641.html
' http://www.eggheadcafe.com/forumarchives/scriptingVisualBasicscript/Jul2005/post23377133.asp
'    
' INPUT: haystack = search in this string
' INPUT: needles = searches divided by |... example: this|"is a"|search
' OUTPUT: HTML formatted highlighted string
'
If Len(haystack) > 0 Then

  ' Delete the first and the last array separator "|" (if any)
  If Left(needles,1) = "|" Then needles = Right(needles,Len(needles)-1)
  If Right(needles,1) = "|" Then needles = Mid(needles,1,Len(needles)-1)

  ' Delete a multiple seperator (if any)
  needles = Replace(needles,"||","|")

  ' Delete the exact-search chars (if any)
  needles = Replace(needles,"""","")

  ' Escape all special regular expression chars
  needles = Replace(needles,"(","\(")
  needles = Replace(needles,")","\)")
  needles = Replace(needles,".","\.")

  If Len(needles) > 0 Then
    haystack = " " & haystack & " "
    Set re = New RegExp
    re.Pattern = "(" & needles & ")"
    re.IgnoreCase = True 
    re.Global = True 
    highlightStr = re.Replace(haystack,"<span style='background-color:khaki;'>$&</span>")
  Else
    highlightStr = haystack
  End If

Else
  highlightStr = haystack
End If

End Function
于 2013-03-11T07:12:14.600 に答える