Thema: Teilstring ersetzen Fr Feb 27, 2009 10:44 pm
Soo... Ich hab jetzt mal entschieden mal wieder was schönes zu entwickeln. Nun zu meinem Problem:
Ich habe eine Zeichenkette. Ich will alle vorkommen einer anderen Zeichenkette durch eine wiederrum andere ersetzen. In der Doku hab ich keinen Befehl gefunden. Meine Frage: Muss ich das irgendwie mit ner schleife lösen?
Gamer Staatsrat
Alter : 28 Ort : In einem kleinen Dorf in Unterfranken (Bayern) Anmeldedatum : 10.02.09
Thema: Re: Teilstring ersetzen Fr Feb 27, 2009 11:07 pm
Man kann das doch einfach wie bei einer Variablenzuweißung machen... es gibt doch speicherbare Strings. Es gibt auch einen Operator dafür.
Höfi SFT
Alter : 29 Anmeldedatum : 20.10.08
Thema: Re: Teilstring ersetzen Fr Feb 27, 2009 11:14 pm
Wie jetzt?
Liech Fregattenkapitän
Alter : 33 Anmeldedatum : 02.02.09
Thema: Re: Teilstring ersetzen Fr Feb 27, 2009 11:18 pm
Das ist garnicht so einfach und auch nicht kurz erzählt. Erzähl entweder was du vorhast (vielleicht gibts da bessere lösungen) Ansonsten schau dir das an, baue eine funktion string GetAscii() und ganz viele weitere böse dinge. Komplette strings kannst du mit S= (strict2 auch ==) vergleichen, d.h du musst den string nur aufsplitten, was ein einmaliger großer aufwand ist.
Ansonsten würde ich mal in System.c4g/Commits.c gucken, vielleicht gibts dort ein string split script.
Höfi SFT
Alter : 29 Anmeldedatum : 20.10.08
Thema: Re: Teilstring ersetzen Fr Feb 27, 2009 11:26 pm
Die funktionen hab ich schon durch. Ich will ja nicht nur ein zeichen ersetzen. Was ich erst machen wollte, war in ner Schleife mit Wildcard Match durchgehen. Ich wollt einfach fragen, ob das auch intelligenter geht.
Höfi SFT
Alter : 29 Anmeldedatum : 20.10.08
Thema: Re: Teilstring ersetzen Sa Feb 28, 2009 12:33 am
Oder wie wüdet ihrs machen?
Liech Fregattenkapitän
Alter : 33 Anmeldedatum : 02.02.09
Thema: Re: Teilstring ersetzen Sa Feb 28, 2009 2:02 am
Solange wir nicht wissen was du machen willst, sondern nur wie du es machen willst können wir dir eigentlich garnicht helfen.
Höfi SFT
Alter : 29 Anmeldedatum : 20.10.08
Thema: Re: Teilstring ersetzen Sa Feb 28, 2009 2:06 am
Ich will nen clonk machen, mit dem man chatten kann. So ne Art chatbot. Kennt wer von euch eliza?
Liech Fregattenkapitän
Alter : 33 Anmeldedatum : 02.02.09
Thema: Re: Teilstring ersetzen Sa Feb 28, 2009 2:11 am
Ja, da brauchst du wirklich aufwand:\ Am besten du baust dir ersteinmal eine riesige funktionssammlung um strings zu manipulieren (Diese kannst du wunderbar hochladen, braucht sicher jeder mal) Du kannst jedes zeichen einzeln extrahieren, zurück übersetzen (mit der entsprechenden funktion), wieder teilweise nach wunsch zusammenfügen und dann kannst du sie untersuchen. Was besseres fällt mir jetzt nicht ein.
Höfi SFT
Alter : 29 Anmeldedatum : 20.10.08
Thema: Re: Teilstring ersetzen Sa Feb 28, 2009 2:16 am
Ich versteh zwar nicht, was du meinst, aber ich mach das jetzt so wieichs anfangs auch schon wollte.
Mega Hazard Staatsrat
Alter : 31 Ort : Brunswiek *helllau* Anmeldedatum : 24.01.08
Thema: Re: Teilstring ersetzen Sa Feb 28, 2009 11:14 am
Du müsstest doch eigentlich mi etwas if(), for() und GetChar bzw. GetAscii das schaffen können. Zum Beispiel suchst du zuerst im ganzen String nach einem Buchstaben des Teilstrings, dann links bzw. rechts davon nach den Anderen.
Höfi SFT
Alter : 29 Anmeldedatum : 20.10.08
Thema: Re: Teilstring ersetzen Sa Feb 28, 2009 12:54 pm
Auch ne gute Möglichkeit! Andere Idee: Eigentlich bräuchte man nur herrausfinden, wo sich der Teilstring befindet. DAs könnte man mit ner Schleife realisieren, die den zu durchsuchenden string verkleinert und dan nach dem Teilstring sucht.
kevda Feldmarschall
Anmeldedatum : 08.05.08
Thema: Re: Teilstring ersetzen Sa Feb 28, 2009 10:48 pm
Ich würde vorschlagen erst mit Wildcardmatch überprüfen ob der String1 überhaupt im String2 vorhanden ist und dann würde ich den String2 durchgehen bis man auf den bestimmten String1 kommt. Bei Schritt zwei muss du lediglich mehrmals mit GetChar überprüfen.
So eine FindStringInString Funktion kann man ruhig uploaden aufn CCAN, muss dann nur noch paar weitere nützliche String-Funktionen hinzufügen.
Vadim_Rodin Kadett
Alter : 26 Ort : Scheer Anmeldedatum : 19.01.09
Thema: Re: Teilstring ersetzen So März 01, 2009 11:01 am
Willst du so ein chatbot machen wie bei Der Szen Tal Des Blutes Oder? wenn ich mich nicht irre
TqmTqm Clonk
Anmeldedatum : 23.02.09
Thema: Re: Teilstring ersetzen So März 01, 2009 8:12 pm
so
hab dir mal ein paar funktionen geschrieben :
Code:
#strict
//TqmTqms kleine Stringfunktionen //enthalten bis jetzt:
//string StrReplace(string zeichenkette,string suchMuster,string ersetzenDurch)by TqmTqm //die funktion StrReplace durchsucht die gesamte "zeichenkette" nach dem "suchMuster" und ersetzt //dieses durch "ersetzeDurch" und gibt dann den modifizierten string zurück
func StrReplace(string zeichenkette,string suchMuster,string ersetzenDurch){ for (var i = 0;i<GetLength(zeichenkette);i++){ if (suchMuster eq SubStr(i,zeichenkette,GetLength(suchMuster)+i)) zeichenkette = Format("%s%s%s",SubStr(0,zeichenkette,i),ersetzenDurch,SubStr(GetLength(suchMuster)+i,zeichenkette,GetLength(zeichenkette))); } return(zeichenkette); }
//string SubStr(int start,string zeichenkette, int ende) by TqmTqm //die funktion SubString erzeugt aus der übergebenden zeichenkette //einen teilstring. start makiert dabei das erste zeichen was angezeigt werden soll //um beispielsweise aus "Clonk" "lonk" zumachen müsste man SubStr(1,"Clonk") aufrufen //bei start 0 würde wieder Clonk herauskommen. Außerdem gibt es noch optional den 'ende' //parameter, damit kann man das ende des neuen strings festlegen //SubStr(1,"Hamburger",4) erzeugt beispielsweise "amb" //weitere stringfunktionen sind in arbeit
var neueZeichenkette = ""; for (var i = 0;i<GetLength(zeichenkette) && (i < ende || ende == 0);i++){ if (i >= start) neueZeichenkette = Format("%s%s",neueZeichenkette,GetBuchstabe(GetChar(zeichenkette,i))); } return(neueZeichenkette); }
//string CharAt(string zeichenkette,int zahl) by TqmTqm //die funktion CharAt ist wie GetChar, blos das sie //statt dem int wert den wirklichen buchstaben zurückgibt