[C#] Find & Replace Tekst

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

  • MikevanEngelen
  • Registratie: Mei 2001
  • Laatst online: 18-01 22:33
Momenteel ben ik bezig met een projectje, en daar wordt een bepaald bericht verstuurd naar een ontvanger via SMS.
Nu wil ik dat de gebruiker zelf kan bepalen waar bepaalde 'variabelen' in het bericht komen te staan.

Ik had dus het volgende in gedachte:
Uw zoon Sjakie is op 28/08/06 uit klas 1A niet op tijd op school gearriveerd.
Uw zoon |VOORNAAM| is op |DATUM| uit klas |KLAS| niet op tijd op school gearriveerd.
Ik heb op het internet al opgezocht, maar kan niet goed vinden wat ik zoek.
Heeft iemand voor mij een voorbeeld, of kan je mij de goede richting op duwen?
De aangegeven 'variabelen' zijn vooraf in de programma code vastgelegd, en wil er eigelijk dmv een switch blok of if-statement door heen wandelen. Het is me alleen niet geheel duidelijk hoe ik door een string kan lopen met meerdere variabele, en hoe ik werkelijk de waarde vervang.

Het gaat hier om de taal C# (.NET 2.0), maar voorbeelden of referenties in VB.NET zijn ook prima.
Alvast bedankt voor jullie antwoorden en suggesties!

  • PoweRoy
  • Registratie: April 2002
  • Laatst online: 14-02 20:10

PoweRoy

funky!

"Uw zoon |VOORNAAM| is op |DATUM| uit klas |KLAS| niet op tijd op school gearriveerd."

zoiets :?

een object kind maken met de variabelen voornaam/datum/klas en evt andere.
een methode toevoegen zoals sendSMS().
en dan bij de methode
C#:
1
2
3
4
public boolean sendSMS(int gsmnr)
{
string sZin = "uw zoon " + voornaam  + " is op " + datum + " uit de klas " + klas + " niet op tijd op school gearriveerd.";
if <SMSklasse>.send(gsmnr, sZin) return True else False;


even heel simpel gedacht.

[ Voor 3% gewijzigd door PoweRoy op 13-08-2006 21:08 ]

[This space is for rent]


  • Flard
  • Registratie: Februari 2001
  • Laatst online: 14-02 10:05
In C# zit een hele mooie functie: String.Format(..)

Daarmee kun je bijvoorbeeld een constructie als de volgende maken:

C#:
1
2
3
string tekst = "Uw zoon {0} is op {1} uit klas {2} niet op tijd op school gearriveerd.";

string output = String.Format(tekst, voornaam, datum, klas);


de variabele tekst kun je dan opslaan in een database ofzo, zodat de eindgebruiker het kan aanpassen. De variabelen voornaam, datum en klas moet je natuurlijk zelf aanleveren.


een alternatieve, niet zo mooie, manier is met string.replace();

Ik denk dat je zo wel een aanknopingspunt hebt, en lees vooral een MSDN eens door bij String.Format()

  • MikevanEngelen
  • Registratie: Mei 2001
  • Laatst online: 18-01 22:33
Het ligt iets gecompliceerder, ik had inderdaad de String.Replace() functies reeds gevonden.
Die strings worden opgehaald uit de database, en {0} {1} etc gaat niet werken, omdat vooraf niet bepaald kan worden hoeveel variabelen er wel of niet in een bericht worden geplaatst.
De basis berichten komen uit de database, en tijdens het verzenden worden die 'variabelen' vervangen voor waardes.

De praktijk is dat er in de database bijvoorbeeld dit soort berichten zitten:
Uw zoon |NAAM| uit |KLAS| is op |DATUM| niet op school geweest
Binnenkort houd de school opendagen, u en |NAAM| zijn van harte uitgenodigd.
U bent uitgenodigd voor de klassenavond van |KLAS|
Het is dus de bedoeling dat ik een aantal van dat soort 'variabelen' opzet, en de koppel aan 'echte' waardes, vervolgens moeten deze in een willekeurige volgorde worden gevult.

[ Voor 11% gewijzigd door MikevanEngelen op 13-08-2006 21:43 ]


  • Peter
  • Registratie: Januari 2005
  • Laatst online: 14-02 23:28
C#:
1
2
3
string naam = "Peter";
string text = "Binnenkort houd de school opendagen, u en |NAAM| zijn van harte uitgenodigd.";
text = text.Replace("|NAAM|", naam);


:/

[ Voor 10% gewijzigd door Peter op 13-08-2006 22:01 ]


  • Creepy
  • Registratie: Juni 2001
  • Laatst online: 15:24

Creepy

Tactical Espionage Splatterer

Het lijken me ook simpele zoek en vervang acties. Waarom zou je niet met String.Replace() e.d. kunnen werken? .Peter laat precies zien hoe dat in zijn werk gaat :)

"I had a problem, I solved it with regular expressions. Now I have two problems". That's shows a lack of appreciation for regular expressions: "I know have _star_ problems" --Kevlin Henney


  • whoami
  • Registratie: December 2000
  • Laatst online: 15:26
Dit is eigenlijk redelijk triviaal.
Haal je tekst op uit de DB. Doorzoek de tekst op de 'variablen' (makkelijk als die altijd tussen | en | staan bv, en doe dan een string.Replace op die variablen.
Desnoods kan je ook per tekst een lijst bijhouden van variablen.

https://fgheysels.github.io/

Pagina: 1

Dit topic is gesloten.