Ergebnis 1 bis 6 von 6
  1. #1
    Trojaner
    Registriert seit
    05.01.2009
    Beiträge
    65

    Standard [C#] String.Remove

    Bah.. ich steh grad voll aufm schlauch
    gegeben ist folgender string:
    ^ss^gh^ttasg

    jetzt soll immer das "^" und der folgende buchstabe entfernt werden:
    Code:
    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? ^^
    Geändert von cocacola (13.07.2009 um 20:44 Uhr)

  2. #2
    W32.SwineFlu Avatar von Sirect
    Registriert seit
    24.07.2008
    Beiträge
    1.916

    Standard

    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

  3. #3
    Richard Stallman Avatar von Sawyer
    Registriert seit
    26.07.2008
    Beiträge
    2.037

    Standard

    Kürzer und viel schöner :p
    Code:
    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
    Geändert von Sawyer (13.07.2009 um 21:12 Uhr)

  4. #4
    Trojaner
    Registriert seit
    05.01.2009
    Beiträge
    65

    Standard

    @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 ^^

  5. #5
    Richard Stallman Avatar von Sawyer
    Registriert seit
    26.07.2008
    Beiträge
    2.037

    Standard

    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.

    Code:
            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
    Geändert von Sawyer (13.07.2009 um 22:18 Uhr)

  6. #6
    Trojaner
    Registriert seit
    05.01.2009
    Beiträge
    65

    Standard

    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!
    Geändert von cocacola (13.07.2009 um 22:23 Uhr)

Stichworte

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •