Merkkijonojen korvaaminen toisella

Eli, kysymys on seuraavanlaisesta:

Yritän tässä harjoitella alkeita ja seuraavaksi olisi tarkoitus duunata jonkinlainen sanakirja. Ongelmana onkin nyt sanojen korvaaminen toisilla. Eli, jos minulla olisi vaikka seuraavanlainen koodi:

Scanner skanner = new Scanner (System.in);
System.out.print("Word?");
String word = skanner.nextLine();
word = word.replaceAll("koira", "dog");

niin ohjelma muuttaa esimerkiksi tekstin "minulla on susikoira" > "minulla on susidog".
Mikä on taikasana javassa sille, että pystyisin korvaamaan tietyt _kokonaiset_ sanat niin, ettei sanojen osia edes tutkittaisi?

Toinen ongelmani liittyy juurikin noihin sanoihin. Onko javassa mahdollista luoda tälle > word = word.replaceAll("koira", "dog"); jonkinlaista taulukkovastinetta? eli yhdessä taulukossa olisi isompi läjä sanoja/tietyt korvaavat sanat jokaiselle?
1355
Äänestä

Muut lukivat myös

Vastaukset 1

Vanhimmat

"Mikä on taikasana javassa sille, että pystyisin korvaamaan tietyt _kokonaiset_ sanat niin, ettei sanojen osia edes tutkittaisi?"

Lisää sekä etsittävän ja tilalle vaihdettavan merkkijonon eteen ja perään välilyönti. Jotta homma toimisi myös sanan esiintyessä rivin alussa tai lopussa, pitää sinun lisätä rivin alkuun ja loppuunkin välilyönti.

"Toinen ongelmani liittyy juurikin noihin sanoihin. Onko javassa mahdollista luoda tälle > word = word.replaceAll("koira", "dog"); jonkinlaista taulukkovastinetta? eli yhdessä taulukossa olisi isompi läjä sanoja/tietyt korvaavat sanat jokaiselle?"

Joudut varmaan kirjoittamaan sellaisen itse. For-loopilla toteutettuna et tarvitse kovin montaa riviä, mutta tuollainen toteutus on sitten ihan hemmetin hidas jos sanoja on vähänkään enemmän. Kannattaisi tuo algoritmi miettiä ihan kokonaan uusiksi, eikä välttämättä edes käyttää replaceAll:ia.

Äänestä

Kommentoi aloitusta


§§§§§§ kirjoitti:

Eli, kysymys on seuraavanlaisesta:

Yritän tässä harjoitella alkeita ja seuraavaksi olisi tarkoitus duunata jonkinlainen sanakirja. Ongelmana onkin nyt sanojen korvaaminen toisilla. Eli, jos minulla olisi vaikka seuraavanlainen koodi:

Scanner skanner = new Scanner (System.in);
System.out.print("Word?");
String word = skanner.nextLine();
word = word.replaceAll("koira", "dog");

niin ohjelma muuttaa esimerkiksi tekstin "minulla on susikoira" > "minulla on susidog".
Mikä on taikasana javassa sille, että pystyisin korvaamaan tietyt _kokonaiset_ sanat niin, ettei sanojen osia edes tutkittaisi?

Toinen ongelmani liittyy juurikin noihin sanoihin. Onko javassa mahdollista luoda tälle > word = word.replaceAll("koira", "dog"); jonkinlaista taulukkovastinetta? eli yhdessä taulukossa olisi isompi läjä sanoja/tietyt korvaavat sanat jokaiselle?

Anonyymi
5000

Ilmoita asiaton sisältö

  • Sisältää materiaalia, joka on loukkaavaa, herjaavaa, rasistista, uhkailevaa tai ahdistelevaa.

  • Materiaali sisältää nimiä, yhteystietoja tai muita henkilökohtaisia tietoja. Julkisuuden henkilöistä, julkisissa viroissa toimivista ihmisistä sekä yritysten vastuuhenkilöistä saa keskustella työhön liittyen. Myös yksityiselämään liittyvistä asioista voi keskustella siltä osin, kuin niistä on julkisesti kerrottu.

  • Sisältää lapsille haitallista tai heiltä kiellettyä materiaalia. Seksuaalinen sisältö on sallittua aiheeseen tarkoitetuilla palstoilla, joiden ikäraja on 18 vuotta.

  • Lainvastaista sisältöä voi olla mm. yksityiselämää loukkaavan tiedon levitys, kiihottaminen kansanryhmää vastaan, laiton uhkaaminen, alaikäisiin liittyvä seksuaalinen sisältö/grooming, petokset, identiteettivarkaudet, kunnianloukkaukset ja tekijänoikeusrikkomukset.

  • Sisältö ei liity palstan tai keskusteluketjun aiheeseen.

  • Viesti ei ole suomea tai ruotsia (pl. International Forums), se sisältää mainontaa, se sisältää tekijänoikeuksin suojattua materiaalia, se on massapostitus tai jokin muu syy.

Jaa keskustelu