2016-11-17 3 views
0

Ich habe ein Problem beim Verketten von Zeichenfolgen in einer C#/Unity-App, die ich nicht verstehe. Dies ist eine einfache Chat-Box, die bis heute gut funktionierte; Ich bin total ratlos, warum es funktioniert hat.Warum kann StringBuilder nicht an AppendLine?

Code:

StringBuilder builder = new StringBuilder(); 
public void AddLine(string text) 
{ 
    builder.AppendLine(text); 
    chatText.text = builder.ToString(); 
} 

Das Problem ist, dass der Bauherr einen Eingang nehmen. Es wird den Text ein einziges Mal anhängen. Danach wird kein neuer Text angehängt. Dasselbe gilt, wenn ich die Stringbuilder-Klasse nicht verwende und einfach Chattext.text + = '\ n' + text;

Ich kann überprüfen, dass es die Zeichenfolge selbst ist, die in keiner Weise geändert wird. Ich habe versucht, dies ein halbes Dutzend verschiedene Arten zu schreiben. Warum könnte das möglicherweise passieren?

+7

Meine Vermutung ist, dass Ihre Zeichenfolge ein "\ 0" oder ähnliches enthält. Es geht hier nicht um 'StringBuilder', aber ohne [mcve] können wir nichts mehr sagen. –

+0

Ist chatText ein Steuerelement für mehrere TextBoxen mit genügend Platz, um mehr als eine Zeile anzuzeigen? – Steve

+0

Danke Jon. Ich vermute, dass auch etwas in der Zeichenfolge ist, weil ich eine Funktion wie folgt hinzugefügt habe: 'if (Input.GetKeyUp (KeyCode.A)) { AddLine (" Eingabe "+ i.ToString()); i ++; } ' und das funktioniert richtig. Die Debuginformationen für die eingehende Zeichenfolge scheinen jedoch perfekt zu sein. Wie kann ich einen Drilldown durchführen und weitere Informationen zu diesem String erhalten? –

Antwort

1

überprüfen, ob die mehrzeilige Eigenschaft des ChatText auf true gesetzt ist

+0

Das Textfeld ist in Ordnung. Ich habe auch gerade eine kleine Funktion hinzugefügt, um manuell Text hinzuzufügen, und das funktioniert. –

1

Ok, also das Endergebnis ist, dass der Grund hierfür ist zu verketten schlug fehl, da einige versteckte Müll in der Eingabezeichenfolge war. Ich weiß nicht, wie es dazu kam, aber die Lösung bestand darin, einen regulären Ausdruck zu verwenden, um ungültige Zeichen aus der Eingabezeichenfolge herauszufiltern.

+0

Warum haben Sie die eckige Frage gelöscht – Sajeetharan

Verwandte Themen