PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : [C#] String.Remove



cocacola
13.07.2009, 20:41
Bah.. ich steh grad voll aufm schlauch
gegeben ist folgender string:
^ss^gh^ttasg

jetzt soll immer das "^" und der folgende buchstabe entfernt werden:


input = "^ss^gh^ttasg"
Regex myregex = new Regex("^");
int anzahl = myregex.Matches(input).Count;
for (int k = 1; k < anzahl; k++)
{
input = input.Remove(input.IndexOf("^", 2));
}
alledings bekomme ich immer die fehlermeldung, dass der startindex nicht kleiner als 0 sein darf (indexOf funktioniert also nicht). was mache ich falsch? ^^

Sirect
13.07.2009, 20:58
Module Module1
Sub Main()
Dim startstring As String = "^ss^gh^ttasg"
Dim split() As String = startstring.Split("^")
Dim output As String = ""
For Each item In split
output &= item.Substring(1, item.Length - 1)
Next
Console.WriteLine(output)
Console.Read()
End Sub
End Module


:)

Sawyer
13.07.2009, 21:09
Kürzer und viel schöner :p


string Text = "^ss^gh^ttasg";

for (int i = 0; i < Text.Length; i++)
{
if (Text[i] == '^') {
Text = Text.Remove(i, 2);
}
}

Console.WriteLine(Text);MfG

cocacola
13.07.2009, 21:55
@ThePapst: Da isn denkfehler drin. wenn du den string das erste mal veraenderst, ist die variable i nicht mehr stimmig, also passend zum input string ^^

Sawyer
13.07.2009, 21:59
edit:
stimmt du hast recht x(

edit2:
Irgendwie verstehe ich die ganze Logik dahinter nicht , denn auch wenn die Zähler Variable erst erhöht wird Wenn das aktuelle Zeichen kein '^' ist , kommt als Ergebnis trotzdem das selbe heraus , was auch rauskommt , wenn man den string selbst durchgeht und die Zeichen löscht , ergo hat auch der obere Source bereits funktioniert.


static void Main(string[] args)
{
string Text = "^ss^gh^ttasg"; int i = 0;

while (i < Text.Length)
{
if (Text[i] == '^') {
Text = Text.Remove(i, 2);
} else {
i++;
}
}

Console.WriteLine(Text);
Console.Read();
}MfG

cocacola
13.07.2009, 22:20
ne der obere hat für mich nicht ganz korrekt funktioniert. man kann das ganze lösen indem man i einfach auf 0 setzt sobald der if part ausgeführt wird (natürlich führt das zu unnötigen schleifenwiederholungen). aber dein zweiter code sollte auch einwandfrei funktionieren

edit: klappt einwandfrei! danke für deine hilfe!