Zum Inhalt springen
View in the app

A better way to browse. Learn more.

Fachinformatiker.de

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

suchergebnisse highlighten

Empfohlene Antworten

Veröffentlicht

hi,

ich möchte gerne suchergebnisse mit hilfe von asp highlighten

dazu hab ich mir eine kleine funktion gebastelt die in einem string einen anderen such und wenn er vorkommt das gefundene mit <font color='#cc0000'>das gefundene</font> replaced.

verwirrend? einfach mal ansehen:

<%

function highlightSearchWords(str,searchStr)

highlightSearchWords = replace(str,searchStr,"<font color='#cc0000'>" & searchStr & "</font>")

end function

%>

tja, nur leider gehen mir so grossbuchstaben verloren, bzw. der searchstring wird nicht gefunden, da case sensitiv...

beispiel:

sucheingabe "becke"

gefunden über sql abfrage:

Heinz Becker

Fritz Becker

Beckersbacher Chor

wenn ich da nun mein replace drauflassen lasse passiert folgendes:

"becke" "Heinz Becker" ->keine übereinstimmung

"becke" lcase("Heinz Becker") -> führt dazu, dass ich dann leider im ergebnis folgendes dastehen habe:

<font color="#000000">heinz</font><font color="#cc0000">becke</font><font color="#000000">r</font>

also heinz becker klein, aber ich brauche

<font color="#000000">Heinz</font><font color="#cc0000">Becke</font><font color="#000000">r</font>

hat da jemand ne idee und vor allem: hats jemand verstanden??

schreib doch das tolowercase in ne extra variable und überschreibe dir deinen suchbegriff damit nicht

hmm das hab ich nicht ganz verstanden...sorry

IIRC gibt es für das "replace" einen Parameter der festlegt ob man einen BinaryCompare (also case-sensitive) oder TextualCompare (also case-insensitive) durchführen möchte. Damit sollte es gehen! ;)

EDIT:

Versuch's mal so:

highlightSearchWords = replace(str,searchStr,"<font color='#cc0000'>" & searchStr & "</font>",,,1)

Die "1" steht dann für "TextualCompare", die beiden weggelassenen Parameter sind start und count!

ICQ

stimmt. hab ich gerade mal nachgeguckt.

aber das problem ist ja, dass ich nicht weiß wie das gefundene wort oder der teil im suchstring geschrieben wurde.

somit kann ich ja auch nicht replacen (egal ob case oder nicht sensitive)

bsp:

ich suche nach "heinz"

finde ich dann meinetwegen not case sensitiv in "Heinz Becker"

und möchte nun "Heinz" und nicht "heinz" mit meinem roten font highlighten.

das geht ja aber leider nicht, weil ich nicht weiss wie "heinz" in "Heinz Becker" gefunden wurde...:confused:

EDIT:

@ICQ: jupp deine funktion stimmt. leider löst das das problem aber nicht, da wie gesagt das ersetzen noch das problem ist. das finden funzt jetzt ja schon mal ...

einfacher wäre es gewesen das ganze mit google zu erklären:

wenn ich in google einen suchbegriff eingebe kommen alle websiten die den suchbegriff enthalten.

dieser suchbegriff wird aber fett dargestellt, wobei er im "original" erscheint.

also mein suchbegriff ist "highlight"

google zeigt aber dann den text einer website folgender massen an:

Das Highlight der Gala war...

wobei Highlight ja gross bleibt...

habe folgende DOTNET regex funktion gefunden, die aber leider in "normalem" asp nicht funktioniert, da die methode ".escape" nicht vorhanden ist.

vielleicht kann das jemand in "normales" asp bringen oder hat sonst noch eine idee...

---------------------------------------------

---------------------------------------------

Function Highlight(Search_Str as String, _

InputTxt as String, _

StartTag as String, _

EndTag as String) As String

Dim ResultStr As String

Return Regex.Replace(InputTxt, "\b(" & Regex.Escape(Search_Str) & ")\b", _

StartTag & "$1" & EndTag, RegExOptions.IgnoreCase)

End Function

---------------------------------------------

---------------------------------------------

danke

Wie wär's denn mit folgendem (nur grob mit VBSkript getestet, daher keine Gewähr auf Funktionalität):


neuertext = origtext

aktuellepos = 1

do

result = InStr(aktuellepos,neuertext,suchtext,1)

if result > 0 then

  neurein = "<font color=#ff0000>" & mid(neuertext,result,len(suchtext)) & "</font>"

  neuertext = left(neuertext,result-1) & neurein &  mid(neuertext,result+len(suchtext))

  aktuellepos = result + len(neurein)

end if

loop until result = 0 

ICQ

hossa! das funktioniert. ich hatte was ähnliches ungefähr dreimal so langes und es scheiterte immer an einem leerzeichen.

respekt und wirklich gaaaaanz vielen dank!!!

Archiv

Dieses Thema wurde archiviert und kann nicht mehr beantwortet werden.

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.