[Java] Zoeken in een regel die aanhalingstekens bevat

Pagina: 1
Acties:
  • 277 views sinds 30-01-2008

  • Orion666
  • Registratie: Juli 2003
  • Laatst online: 29-06 18:01
Ik ben bezig met een methode die me moet vertellen of een bepaalde tekenreeks voorkomt in een gegeven regel.
Deze ziet er als volgt uit:

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
    public boolean komtVoor(String zin, String zoekWoord)
    {
        int van = 0;
        int tot = zoekWoord.length();
        
        while (tot <= zin.length())
        {
            if (zoekWoord.equals(zin.substring(van, tot)))
            {
                return true;
            }
            van++;
            tot++;
        }
        return false;
    }


Nu is het probleem dat mijn zin ook aanhalingstekens en diverse andere leestekens kan bevatten, en dat kan mijn methode natuurlijk niet aan.
Is er een simpele manier om hier omheen te werken?
Ik zat te denken aan een char[], maar ik denk niet dat dat een goede/ de beste oplossing is.

  • Glimi
  • Registratie: Augustus 2000
  • Niet online

Glimi

Designer Drugs

(overleden)
Wat is het verschil van jouw methode met indexOf controle op -1?
Java:
1
2
3
4
public boolean komtVoor(String zin, String zoekWoord) {

   return zin.indexOf(zoekwoord) != -1;
}

En waarom zou je methode geen leestekens aankunnen? Geef eens een voorbeeld wat niet goed werkt en hoe het zou moeten?

  • Orion666
  • Registratie: Juli 2003
  • Laatst online: 29-06 18:01
Glimi schreef op donderdag 18 november 2004 @ 23:03:
Wat is het verschil van jouw methode met indexOf controle op -1?
Java:
1
2
3
4
public boolean komtVoor(String zin, String zoekWoord) {

   return zin.indexOf(zoekwoord) != -1;
}

En waarom zou je methode geen leestekens aankunnen? Geef eens een voorbeeld wat niet goed werkt en hoe het zou moeten?
De methode indexOf() kende ik nog niet, Thanks!

Maar om ff op je vraag in te gaan, stel ik initialiseer de volgende reeks in de string:
zin = "align="center"";
Dat gaat hij de mist in, en dus als ik indexOf() gebruikt bestaat het probleem nogsteeds.

[ Voor 10% gewijzigd door Orion666 op 18-11-2004 23:13 ]


Verwijderd

[newbie_mode]

code:
1
zin = "align="center"";


Okey, we bekijken dit door de ogen van een interprenter; het programma dat je Java code leest en interpreteert.
Zo'n programma leest teken voor teken in. Wanneer we bij het eerste aanhalingsteken zijn aanbeland, weet de interprenter: "Hey, nu komt er een string aan...". De interprenter gaat gewoon lekker verder met teken voor teken lezen en als hij bij het tweede aanhalingsteken is, weet hij: "Nu is de string afgesloten". Daarna komt echter de letter "c". Dat is iets wat de interprenter niet verwacht en daarom valt hij er over.
Je wilt eigenlijk tegen de interprenter zeggen dat het tweede aanhalingsteken niet het einde van de string is. Dat doe je door een \ voor het aanhalingsteken te zetten. Hetzelfde geldt voor het enalaatste aanhalingsteken. Die moet ook niet het einde van de string aangeven.

Conclusie:

code:
1
zin = "align=\"center\"";

[ Voor 15% gewijzigd door Verwijderd op 18-11-2004 23:17 ]


  • Glimi
  • Registratie: Augustus 2000
  • Niet online

Glimi

Designer Drugs

(overleden)
Escape de quotes met \. Voor more detailled info zie http://java.sun.com/docs/...ion/html/4.doc.html#26992

  • Orion666
  • Registratie: Juli 2003
  • Laatst online: 29-06 18:01
Verwijderd schreef op donderdag 18 november 2004 @ 23:15:
[newbie_mode]

code:
1
zin = "align="center"";


Okey, we bekijken dit door de ogen van een interprenter; het programma dat je Java code leest en interpreteert.
Zo'n programma leest teken voor teken in. Wanneer we bij het eerste aanhalingsteken zijn aanbeland, weet de interprenter: "Hey, nu komt er een string aan...". De interprenter gaat gewoon lekker verder met teken voor teken lezen en als hij bij het tweede aanhalingsteken is, weet hij: "Nu is de string afgesloten". Daarna komt echter de letter "c". Dat is iets wat de interprenter niet verwacht en daarom valt hij er over.
Je wilt eigenlijk tegen de interprenter zeggen dat het tweede aanhalingsteken niet het einde van de string is. Dat doe je door een \ voor het aanhalingsteken te zetten. Hetzelfde geldt voor het enalaatste aanhalingsteken. Die moet ook niet het einde van de string aangeven.

Conclusie:

code:
1
zin = "align=\"center\"";
toon volledige bericht
De reden waarom het niet was mij al duidelijk.
Maar dit is ook niet de oplossing, simpelweg omdat het tekstbestand dat ik ga uitlezen bestaat uit een hele hoop quotes.

[ Voor 8% gewijzigd door Orion666 op 18-11-2004 23:28 ]


Verwijderd

:?

Ik snap geen bal van wat je bedoeld...

  • Glimi
  • Registratie: Augustus 2000
  • Niet online

Glimi

Designer Drugs

(overleden)
Orion666 schreef op donderdag 18 november 2004 @ 23:22:
De reden waarom het niet was mij al duidelijk.
Maar dit is ook niet de oplossing, simpelweg omdat het tekstbestand dat ik ga uitlezen bestaat uit een hele hoop quotes.
Onthoud dat het escapen van quotes gewoon een encoding is om quotes in een hardcoded String weer te geven. Intern in de String staat gewoon een char[] met daarin het "-character. De encoding is alleen nodig omdat je in code de javacompiler moet vertellen waar een string begint en waar hij eindigt.
Daarom hoeft je quotes uit strings welke niet hardcoded zijn in je code, niet te escapen.

  • Orion666
  • Registratie: Juli 2003
  • Laatst online: 29-06 18:01
Glimi schreef op donderdag 18 november 2004 @ 23:34:
[...]

Onthoud dat het escapen van quotes gewoon een encoding is om quotes in een hardcoded String weer te geven. Intern in de String staat gewoon een char[] met daarin het "-character. De encoding is alleen nodig omdat je in code de javacompiler moet vertellen waar een string begint en waar hij eindigt.
Daarom hoeft je quotes uit strings welke niet hardcoded zijn in je code, niet te escapen.
Hmmz, dus je zegt dat als ik vanuit bestand blaat.txt telkens een readLine() doe, ik geen last heb van quotes. Wanneer ik in mijn omgeving namelijk zelf de parameters meegeef bij een methode werkt het namelijk alsnog niet.

Ik zal de rest eens schrijven en kijken hoe het werkt.
Bedankt voor de handige links en de moeite!

Acties:
  • 0 Henk 'm!

  • curry684
  • Registratie: Juni 2000
  • Laatst online: 22-07 01:20

curry684

left part of the evil twins

Dit is stiekem toch wel de categorie 'koop een boek' hoor 8)7

Programming & Webscripting is bedoeld om over programmeerproblemen op niveau te discussieren, en dit is toch echt tutorialwerk waarbij we je aan het handje moeten nemen :) Schluss dus.

Professionele website nodig?

Pagina: 1

Dit topic is gesloten.