Announcement

Collapse
No announcement yet.

Doppeltes Zeichen am Ende des Strings entfernen

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Doppeltes Zeichen am Ende des Strings entfernen

    Hi,

    ich habe einen String mit zweistelligen Hex Werten, welcher am Ende mit 0en aufgefllt wird. Diesen möchte ich kürzen.
    Die Einschränkung ist aber, dass ich nur doppelte 00en am Ende entfernen möchte. (Damit laufe ich nicht in Gefahr einen Hexwert "abzuschneiden")

    Habs zuerst mit Trim() versucht.
    Weiters habe ich mir überlegt, es mit Regex.Replace() zu versuchen. Da es aber passieren kann, dass ich auch im vorderen Bereich des Strings Doppel-00 habe, funktioniert dies auch nicht.

    Beispiel:
    [highlight=c#]
    string test = "AB0012014376300000000000";
    string ziel = "AB001201437630";
    [/highlight]

    ich bitte euch hiermit um rat :-)

  • #2
    Vorschlag:

    Code:
    if(String.EndsWith("00")) then Result = String.Trim('0') + "0";
    (zu verstehen als Pseudo-Code, die Struktur von Trim ist - glaube ich - etwas komplizierter)

    Gruß Jürgen

    Comment


    • #3
      danke für den input.

      habs jetzt so gelöst:

      [highlight=c#]

      if (strDATA.EndsWith("00"))
      {
      strDATA = strDATA.Trim('0') + "0";
      }
      strDATA = strDATA.Remove(strDATA.Length - 1, 1);[/highlight]

      LG

      Comment


      • #4
        Nanu, was soll denn das Remove? Mein Trim-Vorschlag entfernt zunächst alle Nullen und fügt dann eine übrig bleibende wieder an. Remove entfernt ein Zeichen, nämlich das letzte. Soll nun eine Null am Ende stehenbleiben oder nicht?

        Übrigens: Statt dieser Art von Remove (für das letzte Zeichen) ist Substring praktischer: das ist ein Kopiervorgang für Strings, Remove ist aber (jedenfalls in der Theorie) zweifaches Kopieren und stellt erst dabei fest, dass der zweite Teilschritt überflüssig ist.

        Jürgen

        Comment


        • #5
          Code:
          string ziel = Regex.Replace(test, "00+$", "");
          So ginge es mit einem regulären Ausdruck.
          Wenn du doch eine einzelne 0 am Ende haben willst mußt du halt mit "0" Replacen und nicht mit "".

          Comment


          • #6
            So wie ich schnurzli verstehe, geht das nur, indem man von hinten so lange "00" abschneidet, wie vorhanden. Eine abschließende Null pauschal wieder anzufügen scheint mir nicht zielführend.
            [highlight="c#"]private string Trimm00(string input){
            if( input.EndsWith("00"))
            return( Trimm00( input.SubString(0, input.Length-2)));
            else
            return( input);
            }[/highlight]

            Wenn Rekursion zu böse ist, kann jemand die Nullen zählen?
            Dann könnte man[highlight="c#"]input.SubString(0, input.Length - 2 * (ZeroCount / 2))[/highlight]zurückgeben.

            Comment


            • #7
              hi,

              eventuell habe ich mein beispiel falsch gewählt.

              ich habe nicht zwingend eine 0 am ende. mein gedanke war der, dass ich alle doppelnullen entferne. es kann eine einzelne null oder gar keine verbleiben.

              [highlight=c#]
              string test = "AB0012014376300000000000";
              string ziel = "AB001201437630";

              string test = "AB00120143760E0000000000";
              string ziel = "AB00120143760E";
              [/highlight]

              Comment


              • #8
                @schnurzli was ist das Problem an Ralfs Lösung? Ich finde dieser Einzeiler stellt das eleganteste dar.
                Originally posted by Ralf Jansen View Post
                Code:
                string ziel = Regex.Replace(test, "00+$", "");
                So ginge es mit einem regulären Ausdruck.
                Wenn du doch eine einzelne 0 am Ende haben willst mußt du halt mit "0" Replacen und nicht mit "".
                Unsere Jugend ist unerträglich, unverantwortlich und entsetzlich anzusehen! - Aristoteles

                Comment


                • #9
                  ... und wenn es, wie Dein letzter Beitrag vermuten lässt, von der Länge des "Rest-Strings" abhängt, dann musst Du eben diese bestimmen und (je nach % 2) eine Null anhängen. Jürgen

                  Comment


                  • #10
                    hallo,

                    mein letztes posting war eigentlich nur eine erklärung meines genauen problems. ich dachte, dass ich nicht ausreichend informationen zur verfügung gestellt hatte. die lösung von Ralf Jansen ist natürlich elegant und funktioniert auch.

                    vielen dank an die fleissigen helfer :-)

                    liebe grüße,

                    schnurzli

                    Comment

                    Working...
                    X