Kirjautuminen

Haku

Tehtävät

Keskustelu: Koodit: QB: Merkkijonon osan korvaus (strreplace)

Sivun loppuun

Antti Laaksonen [04.02.2002 15:31:21]

#

Kun lisäät tämän funktion QBasic-ohjelmaasi, on käytettävissäsi strreplace-niminen funktio, joka toimii aivan samalla tavalla kuin PHP:n str_replace.

FUNCTION strreplace$ (vanha AS STRING, uusi AS STRING, teksti AS STRING)
  DO UNTIL INSTR(teksti, vanha) = 0
    kohta% = INSTR(teksti, vanha)
    teksti = LEFT$(teksti, kohta% - 1) + uusi + MID$(teksti, kohta% + LEN(vanha))
  LOOP
  strreplace$ = teksti
END FUNCTION

snakari [06.02.2002 16:30:18]

#

En saanu toimiin!

Antti Laaksonen [06.02.2002 17:05:16]

#

Kopioi vain tuo funktio QBasic-ohjelmaasi. Sen jälkeen funktion pitäisi näkyä listalla, kun painat F2.

Ja funktion käyttöesimerkki:

PRINT eregreplace("ei toimi","toimii","Tämä ei toimi")

snakari [07.02.2002 15:17:51]

#

Miten saan sen sillain, et se muuttaa vaikka een peeks?
Ja tota esimerkkiä en oikein tajunnu!

Antti Laaksonen [07.02.2002 19:16:44]

#

No näin:

PRINT eregreplace("e","p","eeee")

StiNgeR [28.05.2002 10:00:02]

#

Eihän tuo toimi sinnepäinkään kuin PHP:n ereg_replace()... Missäs tuo parsii ne regexp-hommelit? Tuo vastaa PHP:n str_replace() -funktiota...

Antti Laaksonen [28.05.2002 16:54:28]

#

Näin on. Vinkkiä kirjoittaessani en vielä ollut tutustunut tarkemmin funktion lisäkäyttötarkoituksiin.

Antti Laaksonen [08.10.2003 21:42:00]

#

Vaihdoin nyt koodivinkin nimen hieman oikeammaksi. Parempi myöhään kuin ei milloinkaan.

hunajavohveli [08.05.2005 10:50:19]

#

Yksi ongelma tuossa vain on, joka itsellänikin on monta kertaa tullut vastaan replace-funktiota tehdessä. Nimittäin se, että ohjelma jää ikuiseen silmukkaan, jos uuteen tekstiin sisältyy jokin korvattava teksti.

Esim.
PRINT strreplace$("a", "ba", "bbb")

Tällöin funktio löytää a:n myös juuri luomastaan ba:sta, ja yrittää vaihtaa senkin tilalle ba:n. Ja tällöin syntyy taas uusi ba, ja tätä jatkuu teoriassa loputtomiin.

neau33 [13.02.2009 11:38:15]

#

Heippa!

'VB-style REPLACE funktio QBasic:lle

DECLARE FUNCTION REPLACE$ (mjono$, korvattava$, korvaava$)

  'Testi
  mjono$ = "haloo miss molly"
  PRINT REPLACE(mjono$, "haloo", "hello")
  mjono$ = "haloo tissi molly"
  PRINT REPLACE(mjono$, "tissi", "miss")
  mjono$ = "miss mollyn tissit roikkuu"
  PRINT REPLACE(mjono$, "roikkuu", "hyllyy")
  SYSTEM

FUNCTION REPLACE$ (mjono$, korvattava$, korvaava$)
  IF INSTR(mjono$, korvattava$) = 0 THEN
    REPLACE$ = mjono$: EXIT FUNCTION
  ELSE
    DO
      SELECT CASE INSTR(mjono$, korvattava$)
        CASE IS = 1
          mjono$ = korvaava$ + RIGHT$(mjono$, LEN(mjono$) - LEN(korvattava$))
        CASE IS = LEN(mjono) - LEN(korvattava$)
          mjono$ = LEFT$(mjono$, INSTR(mjono$, korvattava$) - 1) + korvaava$
        CASE ELSE
          alku$ = LEFT$(mjono$, INSTR(mjono$, korvattava$) - 1)
          loppu$ = MID$(mjono$, INSTR(mjono$, korvattava$) + LEN(korvattava$))
          mjono$ = alku$ + korvaava$ + loppu$
      END SELECT
    LOOP UNTIL INSTR(mjono$, korvattava$) = 0
  END IF
  REPLACE$ = mjono$
END FUNCTION

Sivun alkuun

Vastaus

Aihe on jo aika vanha, joten et voi enää vastata siihen.

Tietoa sivustosta