Tabulator Umrechnung



  • hallo zusammen.
    ich habe eine Funktion, in der mir die länge einer Zeichenfolge errechnet wird, wenn Tabulatoren in dieser Zeichenfolge verwendet werden. Wie ich das ganze ausrechne weis ich ist kein Problem.

    zu Beginn lasse ich mir die länge der Zeichenfolge mittels
    strlen("Zeichen\tfolge")
    ausgeben. strlen gibt mir ja die Anzahl der Zeichen zurück. wenn ich jetzt die dargestellte länge ausrechne, muss ich doch zuerst strlen() - 1 rechnen. also das Tab-Zeichen rausrechnen, bevor ich die 4/8 Zeichen für den Tabulator dazu zähle?



  • Du könntest einfach statt (einen abziehen und 4/8 addieren) 3/7 addieren.



  • oder so 😉
    mir gehts grad nur um den gedanken gang, der tab muss aus der Anzahl der Zeichen raus, wie ist egal...



  • Es kommt doch drauf an, wo der Tabulator genau steht, nur die Stringlänge und die Anzahl der Tabs reichen nicht:
    Für jedes Tabzeichen
    Länge += <Tabbreite> - <derzeitige Länge> % <Tabbreite>
    Es sei denn, das Zeichen zuvor war ebenfalls ein Tab, dann Länge+=<Tabbreite>.



  • LowFly schrieb:

    ... bevor ich die 4/8 Zeichen für den Tabulator dazu zähle?

    Denkfehler. Der Tabulator ist nicht 8 Zeichen breit. Er ist so viele Zeichen breit, wie bis zum nächsten Vielfachen von 8 fehlen. Das kann irgendwas zwischen 1 und 8 sein.



  • Leute danke für die Hilfe.
    aber ich schrieb

    Lowfly schrieb:

    Wie ich das ganze ausrechne weis ich ist kein Problem.

    meine frage wurde schon beantwortet.
    🙄



  • Dann entschuldige, dass wir dir helfen wollten. Den Augenroller geb ich zurück.



  • Oh sorry, wollte dir nicht auf die Füße treten.

    wenn du aber hilfst, sollte es schon richtig sein 😉
    Denn...

    Printe schrieb:

    Der Tabulator ist nicht 8 Zeichen breit. Er ist so viele Zeichen breit, wie bis zum nächsten Vielfachen von 8 fehlen. Das kann irgendwas zwischen 1 und 8 sein.

    der Tabulator ist genau 4/8 Zeichen breit, wenn es ein ein vielfaches von
    4/8 ist. 🙄

    oder der Restwert von

    lchAbsorbed = (chIndex % lTabspace)
    

    Null ergibt.

    und ansonsten

    iLen += ( lTabspace - lchAbsorbed );
    

Anmelden zum Antworten