Gå til innhold

"Dynamic replace"? Erstatte fast verdi med verdier fra liste? (String)


Anbefalte innlegg

(Kort fortalt jobber jeg med å flytte min side fra Joomla 1.0 til Wordpress, men {mosimage} tagger var ikke like enkelt...)

 

Jeg har altså en streng som typisk kan se slik ut:

Her er et fint bilde: {mosimage} og her er et annet bilde: {mosimage}

 

Tilhørende til tekststrengen finnes en liste over bilde, her altså to bilder som feks.

pictures/image1.jpg
pictures/other_image.jpg

 

 

 

Kort fortalt vil jeg erstatte {mosimage} med en <img> tag i "ekte html", og trenger da en "dynamisk erstattning". Finn et element og erstatt det med neste fra lista.

 

Da vil jeg sitte igjen med:

 

Her er et fint bilde: <img src="pictures/image1.jpg"> og her er et annet bilde: <img src="pictures/other_image.jpg">

 

 

Noen som har noen gode tips? :)

Lenke til kommentar
Videoannonse
Annonse

Nei, det fungerer utmerket! Takker og bukekr! Jeg herjer på i VB.net... ;)

 

Jeg kan ikke PHP eller MySQL, så det jeg har gjort nå på mitt amatørmessige vis er å eksportere tabellen. Så er planen å gjøre endringene mine og importere igjen før jeg overfører fra Joomla til Wordpress (overføringen er klargjort og testet).

 

 

EDIT: Mulig jeg har fått det til...

                Dim images() As String = {}
               If text_images IsNot Nothing Then images = text_images.Split(ControlChars.Lf)

               If images.Count > 0 Then
                   Dim image_count As Integer = 0
                   Dim cont As Boolean = True

                   Do While cont
                       Dim i_start As Integer = text_all.IndexOf("{mosimage}")
                       If i_start < 0 Then Exit Do

                       text_all = text_all.Remove(i_start, 10)

                       If image_count <= images.Count - 1 Then
                           text_all = text_all.Insert(i_start, "<img src=""" & images(image_count) & """>")
                       Else
                           cont = False
                       End If

                       image_count += 1
                   Loop

               End If

 

 

... men jeg er veldig interessert i hvordan det burde ha vært løst. ;)

Endret av Moskus
Lenke til kommentar

Koden du har kan ihvertfall gjøres ryddigere:

 

Dim images = text_images.Split(ControlChars.Lf) _
                       .Select(Function(x) String.Format("<img src=""{0}"" />", x))

For Each img In images
  Dim pos = text_all.IndexOf("{mosimage}")
  If pos > 0 Then
     text_all = text_all.Substring(0, pos) + img + text_all.Substring(pos + 10)
  End If
Next

 

Evt. med regex:

 

Dim images = text_images.Split(ControlChars.Lf) _
                       .Select(Function(x) String.Format("<img src=""{0}"" />", x))

Dim ex = New Regex("\{mosimage\}")

For Each img In images
   text_all = ex.Replace(text_all, img, 1)
Next

Endret av MailMan13
  • Liker 1
Lenke til kommentar

Dim image_list = images.Select( Function(x) "<img src=""{0}""></img>")
Dim index As Integer = 0;
text_all = Regex.Replace(text_all, "\{mosimage\}", Function(e) image_list(index += 1));

Funker vel også :)

 

Regex er utrolig kjekt.

Endret av GeirGrusom
  • Liker 1
Lenke til kommentar

Koden du har kan ihvertfall gjøres ryddigere:

 

Dim images = text_images.Split(ControlChars.Lf) _
                       .Select(Function(x) String.Format("<img src=""{0}"" />", x))

For Each img In images
  Dim pos = text_all.IndexOf("{mosimage}")
  If pos > 0 Then
     text_all = text_all.Substring(0, pos) + img + text_all.Substring(pos + 10)
  End If
Next

 

Evt. med regex:

 

Dim images = text_images.Split(ControlChars.Lf) _
                       .Select(Function(x) String.Format("<img src=""{0}"" />", x))

Dim ex = New Regex("\{mosimage\}")

For Each img In images
   text_all = ex.Replace(text_all, img, 1)
Next

 

 

Dim image_list = images.Select( Function(x) "<img src=""{0}""></img>")
Dim index As Integer = 0;
text_all = Regex.Replace(text_all, "\{mosimage\}", Function(e) image_list(index += 1));

Funker vel også :)

 

Regex er utrolig kjekt.

Takk til begge! Da lærte jeg noe nytt og veldig nyttig!

 

For å bruke et meget norsk uttrykk: Sweet! :)

Lenke til kommentar

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å
×
×
  • Opprett ny...