Zahlenketten entdecken

N

NameIstVergeben

Also... Hi^^

Ich habe eine Frage:

Ich habe eine Textbox wo ein Text eingegeben wird (vesrtändlich)
Und nachdem auf "okay" gedrückt wurde sollen VOR allen zahlen ketten folgendes stehen:

"|cffffff80" und hinter diesen ketten soll "|r" stehen
Der text wird dann halt in eine Variable gespeichert und später verwendet.

Das Problem:
1.) Wie durchsuche ich Zeichen per Zeichen?
2.) Wie mache ich das das dieses "80" am ende nicht gilt... also das dort nicht wieder |cff.... vor kommt
3.) Wie mache ich das er ganze Zeichenketten auswählt und nicht jede Zahl einzelnt.

abc123def -> abc|cffffff80123|rdef

abc1d2e3f -> abc|cffffff801|rd|cffffff802|re|cffffff803|rf

Hoffe man kann es verstehen :D

Frage nebenbei:

Das ganze wird über Dialoge geregelt... wie speicher ich den in Dialog1 eingegebenen String und setze den in Dialog2 ein?

Code:
s = dlg.TextBox1.Text
dlg2.TextBox1.Text = s

Hat nicht geklappt...
 
Leider schreibst Du nicht, mit welcher VB-Version Du arbeitest. Trotzdem sollten nachfolgende Hinweise weiter helfen.

Textstrings Zeichen für Zeichen durchsuchst Du am besten mit der mid-Funktion:

Code:
     Dim i as Integer
     Dim Zeichen As String
     For i = 1 To Len(TextString)
           Zeichen = Mid(TextString, i, 1)
     Next

Ansonsten könnte Dir auch die Split-Funktion helfen. Die Erklärungen dafür findest Du in der Hilfe-Funktion.

Bei Deiner letzten Frage gehe ich davon aus, dass die Bezeichnung "dlg" sich auf Formen beziehen?

Dann sollte es so funktionieren:

Code:
dlg2.TextBox1.Text = dlg.TextBox1.Text
 
Jeder String ist ja im Prinzip nur eine an ein aneinander Kettung von char.
Du kannst als den String in einer for Schleife durchlaufen und deinen SChleifen Zähler als Indexposition verwenden.
C#:
for(int i = 0; i < meineString.Length; i++)
{
   if (meinString[i] == '1')
   {
       //tu was
   }
}

Über die Substring Methode von String könntest du jetzt den string auseinanderer reißen an deiner Indexposition, und deine Sachen anfügen (i muss dann um die Anzahl der neu hinzugefügten Zeichen erhöht werden).

Ich hoffe das hilft dir erstmal weiter, wollte jetzt nicht gleich ne komplett Lösung posten ;)

P.S.: Du könntest es auch mit regular Expression "einfacher" lösen.
Versuch dich aber erstmal an den string Methoden.
 
Zuletzt bearbeitet von einem Moderator:
Hi.

Spyke, warum nicht gleich als RegEx? Ist doch viel leichter, und nicht so eine Quälerei. :)

Code:
Dim pattern as String = "(?<num>\d+)"
Dim replacement as String = "|cffffff80${num}|r"

Dim rgx As New Regex(pattern)

Dim input as String = "abc1d2e3f"
Dim output as String = rgx.Replace(input, replacement)

Zum TextBox-Problem deiner Dialoge: Die TextBoxen müssen als public definiert sein, damit du von ausserhalb darauf zugreifen kannst. Schöner wäre es aber noch, wenn du für den Zugriff eigene Eigenschaften bei den Dialogen bereitstellen würdest.

lg,..
 
Da er sich wahrscheinlich eher schwer tun wird regex zu verstehen.

Und bei den String Methoden kann er sich besser bilden und hat ein deutlich höheren aha Effekt.

P.S.: aber ich hab was gelernt, das man die Gruppenbezeichnung direkt wieder für replace nutzen kann wusste ich noch nicht :D
 
ups sowas ähnliches wie ich hattest du ja auch schon geschrieben, sehe ich gerade. :-(
Irgendwie sind mir die erstens Posts nicht aufgefallen :confused:
 
Macht ja nix... Vielleicht möchte der geehrte Gast, dessen Name schon vergeben ist, ja auch noch C lernen, das wäre dann der erste Ansatz.
 
Zurück