[C#] Zeilenumbruch bei Zeichenlänge?

  • Hey,
    habe schon gegoogelt, aber nichts gefunden bzw. bin ich nicht damit zurecht gekommen.


    Ich würde gerne wissen, wie man bei einem String mit z.B. der Zeichenlänge von 100 Zeichen nach 50 Zeichen bzw nach 40x und dem letzten Wort bzw einem Leerzeichen einen neuen Zeilenumbruch macht.


    Wäre sehr geil, wenn mir jemand nen Codeschnipsel geben würde, oder es mir erklären könnte.
    LG

    ▬|██████|▬
    This is Nudelholz.
    Copy Nudelholz in your Signatur
    to make better Kuchens
    and other Teigprodukte!

  • Da wird ein Komma ersetzt und der Text abgeschnitten, damit kann ich nichts anfangen, kenne mich noch nicht so gut aus.

    ▬|██████|▬
    This is Nudelholz.
    Copy Nudelholz in your Signatur
    to make better Kuchens
    and other Teigprodukte!

  • So viel weiß ich auch, BlackAce. Mir fehlt es nur an der Umsetzung... ^^
    Außerdem möchte ich nicht, dass Wörter mittendrin gecutted werden.

    ▬|██████|▬
    This is Nudelholz.
    Copy Nudelholz in your Signatur
    to make better Kuchens
    and other Teigprodukte!

  • Dann geh mit der Find Methode den String durch, dann siehst du ja ob in der Nähe der 100 Zeichen ein Leerzeichen ist oder nicht.
    Wenn ja, Zeilenumbruch -> fertig


    Den String gehst du am besten mit einer while Schleife durch.
    Als Bedingung setzt du die Find Methode und prüfst den Rückgabe wert und die Postion.

    "Bevor ich mir Informationen aus der "Bild" hole,
    werde ich anfangen, Wahlergebnisse danach vorauszusagen,
    neben welchen Busch unsere Katze gepinkelt hat."

    Margarete Stokowski

  • Wie oben gesagt, ich kenne mich in C# kaum aus. Ich setze nur meine vorhanden Kentnisse um. Für nen Programm hats gereicht. Das ist das einzige, was mir noch fehlt und C# spezifisch kenne ich die Funktionen halt null und dementsprechend kann ich das leider nicht umsetzen, so wie du es mir erklärst.

    ▬|██████|▬
    This is Nudelholz.
    Copy Nudelholz in your Signatur
    to make better Kuchens
    and other Teigprodukte!

  • Code
    String str =" ... irgendwas mit 100 Zeichen";
    for (int i = 0; i != str.Length; ++i) {
        if ((i % 50) == 0 && str [i] == '\32;' && i != 0) str [i] = '\n';
    }


    Code am Handy geschrieben sollte jedoch so funktionieren

  • Waren einige Fehler. Habe jetzt mein Array eingesetzt und (versucht) die Fehler gefixxt.


    Code:

    Code
    for(int h = 0; h < iCount; h++)
                    {
                        for (int j = 0; j != Frage[h].Length; ++j) 
                        {
                            if ((j % 50) == 0 && Frage[h] == "\\32;" && j != 0) Frage[h] = "\n";
                        }
                    }


    funktioniert leider nicht.
    Wofür ist denn überhaupt "\32" ?
    Da kam übrigens ein Fehler, deshalb habe ich das 2. \ eingefügt.

    ▬|██████|▬
    This is Nudelholz.
    Copy Nudelholz in your Signatur
    to make better Kuchens
    and other Teigprodukte!

  • do.de - Domain-Offensive - Domains für alle und zu super Preisen

  • So dieser Code funktioniert so wie du es möchtest , das \32; ist der Ascicode von einem Leerzeichen jedoch wird das ganze nicht so erkannt.


    Mal so eine Frage ? Was genau willst du mit deinem Code erreichen , welchen di gerade gepostet hast ?


    Ich sag dir mal was dieser macht:


    Du gehst eine Anzahl durch, die mir jedoch unbekannt ist, nun gut danach führst du nochmal eine Schleife aus Frage[h].Length funktioniert nichtmal da du damit nur die länge von einem String ermitteln kannst nicht von einem Index welcher sowieso nur 1 buchstaben enthält sagen wir mal das würde funktionieren. So macht die Schleife nur einen Durchlauf ersetzt wird jedoch nix.
    Der Rest von 50 aus 0 ist 0 die Aussage trifft zu, es wird überprüft ob es ein Leerzeichen gibt jedoch funktioniert das ganze so leider nicht sonder wie oben gepostet mit ' '
    würde diese Aussage jetzt zutreffen wird es bei der nächsten Scheitern da j den Wert 0 hat und nur 1 Durchlauf macht.

  • Will nen kleines Quiz machen. Hab aus ner Datenbank alle Fragen ausgelesen und in

    Code
    Frage[i]

    gespeichert. Da die Fragen aber teilweise zu lang sind für die Oberfläche müssen sie nach ner gewissen Länge nen Zeilenumbruch bekommen.


    edit: [ code ]
    edit: Verstehe auch nicht ganz. Kannst du nicht mal alles als Array schreiben? Wenn du meinst, dass man bei nem Array nicht überprüfen kann, wie lang es ist, dann müsste man das ja iwie anders machen, aber nicht so statisch...

    ▬|██████|▬
    This is Nudelholz.
    Copy Nudelholz in your Signatur
    to make better Kuchens
    and other Teigprodukte!

    2 Mal editiert, zuletzt von ElDiabolo ()

  • Das ist ja nicht statisch du musst ja lediglich dein string den du in dem String-Array speicherst an einen Stringbuilder übergeben damit du auf den einzelnen index zugreifen kannst und diesen auch editieren.



    String [] Data = new string[10];
    Data[0] = "Hallo wie geht es euch den heute es ist doch ein schönes Wetter draußen warum sitz ihr hier Hallo wie geht es euch den heute es ist doch eine schönes Wetter draußen warum sitz ihr hier";
    StringBuilder test = new StringBuilder(Data[0]);
    bool letter = false;


    for (int i = 0; i != test.Length; ++i)
    {
    if((i % 50) == 0 && i != 0){
    if (test[i] != ' ') letter = true;
    else test[i] = '\n';
    }
    else if (letter == true && test[i] == ' ')
    {
    test[i] = '\n';
    letter = false;
    }
    }
    Data[0] = test.ToString();
    Console.Write(Data[0]);
    Console.ReadLine();


    Ich hab dir das etwas umgeschrieben, wie du eine zweite Schleife integrierst, dies darfst du selbst herausfinden, ist jedoch nicht sonderlich schwierig.

  • Das ist ja nicht statisch du musst ja lediglich dein string den du in dem String-Array speicherst an einen Stringbuilder übergeben damit du auf den einzelnen index zugreifen kannst und diesen auch editieren.


    Ich hab dir das etwas umgeschrieben, wie du eine zweite Schleife integrierst, dies darfst du selbst herausfinden, ist jedoch nicht sonderlich schwierig.


    Vielen Dank erstmal. Habe es jetzt mal eingefügt und die 2. Schleife ausgeführt. Es wird allerdings nirgens ein \n eingefügt bzw. eine neue Zeile gebildet...


    for (int h = 0; h < iCount; h++)
    {
    StringBuilder test = new StringBuilder(Frage[h]);
    bool letter = false;


    for (int j = 0; j != test.Length; ++j)
    {
    if ((j % 50) == 0 && j != 0)
    {
    if (Frage[j] != " ") letter = true;
    else Frage[j] = "\n";
    }
    else if (letter == true && Frage[j] == " ")
    {
    Frage[j] = "\n";
    letter = false;
    }
    }
    Frage[h] = test.ToString();
    Console.Write(Frage[h]);
    Console.ReadLine();
    }

    ▬|██████|▬
    This is Nudelholz.
    Copy Nudelholz in your Signatur
    to make better Kuchens
    and other Teigprodukte!

  • Weil das was du gemacht hast wieder im großen und ganzen Scheiße war


    Alles was du geändert und hinzugefügt bis zeile 4 ist Top.
    Der Rest einfach nur nosense shit.


    Wie ich bereits in Skype auch erwähnt habe beschäftigst du dich nicht mit der Materie und überlegst deine Schritte, sondern schreibst einfach nur Müll zusammen, du gibst dir nicht einmal die Mühe den Code zu analysieren, welcher dir gepostet wurde.

  • Der fehler müsste sein, dass ich dann in der Schleife Frage[] überprüfe anstatt test richtig?
    Wenn ja, ich kann text aber nicht mit != überprüfen, denn dann wird folgender Fehler ausgegeben:

    Zitat

    Fehler 1 Der Operator "!=" kann nicht auf Operanden vom Typ "System.Text.StringBuilder" und "string" angewendet werden.

    ▬|██████|▬
    This is Nudelholz.
    Copy Nudelholz in your Signatur
    to make better Kuchens
    and other Teigprodukte!

  • Beitrag von ElDiabolo ()

    Dieser Beitrag wurde gelöscht, Informationen über den Löschvorgang sind nicht verfügbar.
  • Ah, vielen Dank, jetzt gehts! :)


    Verstehe allerdings nicht, wieso man auf einmal den String test wie ein Array verwendet und wieso man nur einfache Anführungszeichen nutzt. Kannst du mir das noch erklären?

    ▬|██████|▬
    This is Nudelholz.
    Copy Nudelholz in your Signatur
    to make better Kuchens
    and other Teigprodukte!

  • Bei einem normalen String kannst du den jeweiligen zweiten index nicht ändern, da dieser Schreibgeschützt ist nach Microsoft Visual, daher benötigen wir einen String der mit Stringbuild deklariert wurde.
    Einfache Anführungszeichen werden bei einzelnen Zeichen (chars) genutzt , die doppelten bei einem String also eine Zeichekette mit mehreren Zeichen.

  • do.de - Domain-Offensive - Domains für alle und zu super Preisen