Gå til innhold

Anbefalte innlegg

Skrevet (endret)

Hei.

 

Jeg lurer på om noen vet hvordan man kan søke i en tekst etter spesifike ord. Søkeresultatet skal vises ved at ordene som matcher skal bli "bold" i teksten og det skal komme opp en melding hvor mange resultater som matchet. Noen som kan hjelpe meg?

 

Hvis dere ikke "gidder" å skrive en hel kode, er det en måte dere kan forklare fremgangsmåten eller gi en nyttig link? Kanskje jeg lærer best av det... :hmm:

 

På forhånd takk! :)

Endret av kjey
Videoannonse
Annonse
Skrevet

Fant faktisk ut en litt rar søkealgoritme her :p Det eneste som er problemet nå er hvordan jeg får ordene gitt de forskjellige indeksene til å bli bold. :hmm:

 

Her er løsningen min:

Klikk for å se/fjerne innholdet nedenfor
import java.text.*;

class StringSoker {

public static void main(String[] args) {
 
 // Viktige variabler
 String s = "Dette er en tekst som ment for å søke i!";
 String sokeOrd = "tekst";
 int sokeOrdLengde = sokeOrd.length();
 int sLengde = s.length();
 String sub = "";
 
 // Løkke
 for(int i = 0; i < (sLengde - sokeOrdLengde + 1); i++) {
 	
 	sub = s.substring(i, (i + sokeOrdLengde));
 	
 	if(sub.equals(sokeOrd)) {
   System.out.println("Fant søkeordet i mellom disse indeksene: ( " + (i + 1) + ", " + (i + sokeOrdLengde) + " ).");
 	} // Slutt if
 	
 } // Slutt for-løkke
 
}

}

Skrevet

du har jo allerede fått indexene for substrengen som matcher søkeordet, så poenget blir da å splitte opp opprinnelig del i 3 biter:

del 1: del av opprinnelig tekst som er før søketreff

del 2: ordet/strengen som ble søkt etter

del 3: resten av opprinnnelig tekst

 

Så er det bare å skrive alt sammen ut igjen, System.out.print(del1 + del2 + del3);. Så må du få formatert del2 til å være fet. Hvordan du gjør det vet jeg ikke, jeg kan ikke så mye med JTextArea... Du kan jo lete etter kommandoer i API'en; http://java.sun.com/j2se/1.4.2/docs/api/ja.../JTextArea.html (jeg så det gikk ann å endre font, så det går sikkert ann å bestemme bold/italic/underscore m.m også)

 

og tilslutt: det finnes sikkert bedre løsniner en den jeg kom med, men det å dele opp opprinnelig streng i tre, for så å formatere midterste delen annerledes enn resten burde fungere! Tipper noen andre her inne kjenner bedre til muligheter og begrensninger med JTextArea, så kan være jeg tar feil

Skrevet (endret)

Ah, skal prøve det, er nok ikke så vanskelig nå som jeg har forklaring :cool: Men det med å sette en valgt streng i JTextArea til bold får jeg ikke til! Noen som vet noe som helst om det? Har titta en stund i API'et, men er vel ikke proff nok til å plukke ut den riktige metoden selv :no:

Endret av kjey
Skrevet
Ah, skal prøve det, er nok ikke så vanskelig nå som jeg har forklaring  :cool:  Men det med å sette en valgt streng i JTextArea til bold får jeg ikke til! Noen som vet noe som helst om det? Har titta en stund i API'et, men er vel ikke proff nok til å plukke ut den riktige metoden selv  :no:

7713849[/snapback]

 

JTextArea vil du aldri finne den riktige metoden, prøv broren JEditorPane

Koden på denne siden benytter JTextPane som har alt du trenger, burde være en smal sak å endre fra rød understreking til bold skrift...

http://www.java2s.com/Code/Java/Swing-JFC/...ightExample.htm

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
  • Hvem er aktive   0 medlemmer

    • Ingen innloggede medlemmer aktive
×
×
  • Opprett ny...