CR aus String entfernen, String auf gewisse länge bringen?

  • VB.NET

Es gibt 12 Antworten in diesem Thema. Der letzte Beitrag () ist von singu.

    CR aus String entfernen, String auf gewisse länge bringen?

    Hallo,

    ich hab ein Problem.

    Ich bekomme von meinem Seriellen Port einen Datenstring herein. Dieser Datenstring hat 18 Zeichen. Nach den 18 Zeichen wird ein CR angehängt.

    Wie bekomme ich dieses CR weg? Weiters hätte ich die Frage wie ich einen String auf eine bestimmte länge kürzen kann? Angenommen der String hat 25 Zeichen, ich brauch aber nur die ersten 18, wie mache ich das am besten?

    Ich hoffe mir kann wer helfen!



    mfg
    Danke für die schnelle Antwort, hat so funktioniert.

    Hätte da noch ein Problem, hab dazu allerdings in der Hilfe nichts gefunden.

    Ich hab einen String in dem sind diverse Zeichen.

    Wenn in diesem String ein "." vorkommt dann soll der Punkt und der restliche String mit Leerzeichen aufgefüllt werden. Wie kann ich das am besten realisieren?



    mfg
    finde mit IndexOf die Position heraus, dann berechnest du die restlichen zeichen(über die String Länge...), mit Substring liest du dann nur den ersten Teil aus und schreibst diesen in einen neuen String, mit PadRight fügst du an diesen dann die Leerzeichen an, die Anzahl wird durch die zuvor festgelegten restlichen Zeichen definiert...
    Ich wollte auch mal ne total überflüssige Signatur:
    ---Leer---
    weils wesentlich schneller ist

    Achja, als ob hier irgendjemanden ein Faktor 116 Laufzeitverkürzung interessiert, wenn er dafür mit coolen RegEx-Skills punkten kann...

    Gruß FatFire

    PS: Wer den Geschwindigkeitstest machen möchte, hier ein kleines Konsolenprog:
    Spoiler anzeigen

    VB.NET-Quellcode

    1. Dim UrString As String = "Hier ein Text mit Zielstring.Und hier die Sachen die aufgefüllt werden."
    2. Dim DeinString As String = String.Empty
    3. Dim Durchlaeufe As Integer = 100000
    4. Dim Stopwatch As New Stopwatch
    5. Stopwatch.Start()
    6. For i As Integer = 0 To Durchlaeufe
    7. DeinString = UrString
    8. DeinString = System.Text.RegularExpressions.Regex.Replace(DeinString, "(?<=\..*).", " ")
    9. DeinString = DeinString.Replace(".", " ")
    10. Next
    11. Stopwatch.Stop()
    12. Console.WriteLine("FatFires Methode: " & Stopwatch.ElapsedMilliseconds & "ms.")
    13. Stopwatch.Reset()
    14. Stopwatch.Start()
    15. For i As Integer = 0 To Durchlaeufe
    16. DeinString = UrString
    17. Dim Length As Integer = DeinString.Length
    18. DeinString = DeinString.Substring(0, DeinString.IndexOf("."))
    19. DeinString = DeinString.PadRight(Length)
    20. Next
    21. Stopwatch.Stop()
    22. Console.WriteLine("jvbsls Methode: " & Stopwatch.ElapsedMilliseconds & "ms.")
    23. Console.ReadKey()
    erstens hast du meins falsch umgesetzt und zweitens könnte man auch da noch Performance raushohlen und außerdem, wen interessiert Performance nicht?!^^
    Und es ist nunmal so, dass wenn man das entsprechend oft macht immer mehr bringt ganz besonders bei langen Strings...
    Ich wollte auch mal ne total überflüssige Signatur:
    ---Leer---
    Danke für die Hilfe, werd es gleich ausprobieren!



    Hab allerdings noch ein Problem, ich schreib das mal einfach hier rein!

    Ich hab ein ActiveX Steuerelement, wenn ich das einfügen will, dann kommt die Fehlermeldung das ich es registrieren muss, wie mach ich das?

    Beim VB 2006 gibt da ja so ein programm mit dem man das Registrieren kann, das hab ich aber im VB2008 nicht gefunden...