Zeilenumbruch in einem String

Status
Nicht offen für weitere Antworten.
G

Gast

Gast
Hallo,

ich programmiere grad einen relativ simplen Chat mit GUI und hab grad das "kleine" Problem,
dass ein String, bei dem ein Zeilenumbruch enthalten ist (also durch Enter), nicht komplett
an den Zielclient geschickt wird. "Normale" Zeilenumbrüche, also wenn man einfach über die
Zeile hinausschreibt, funktionieren problemlos.

Hier ein kurzer Auszug, wie ich den Test einlese:

inputField ist eine JTextArea.
Code:
   String text=inputField.getText();
   String msg="msg"+targetnumber+" "+c.number+","+text;
Der String "msg" wird dann an den Server gesendet.

Gesendet wird so:
Code:
   s=new Socket(ip, port);
   out=new BufferedWriter(new OutputStreamWriter(s.getOutputStream()));


//irgendwo weiter unten
   try{
	out.write(msg);
	out.newLine();
	out.flush();
   }catch(IOException io){io.printStackTrace();}

Und beim Server so ausgewertet und weiterversendet:
Code:
   String text=msg.substring(msg.indexOf(',')+1,msg.length());
   server.send(targetname,"msg"+sourcename+" "+text);

Beim Zielclient wird dann der Text nach dem Leerzeichen eingelesen und ausgegeben.

Wenn ich aber nun was senden will wie z.B.

Code:
Zeilentest
.
.
.
Noch ne Zeile
.
.
.
etc

kommt beim Zielclient nur "Zeilentest" an.
Ich nehme mal an, dass es ein Problem beim einlesen durch den Writer bzw. Stream gibt, allerdings
kenn ich mich mit den verschiedenen Writern/Readern/Streams noch nicht so 100% aus.
Drum hoff ich mal, einer von euch hat ne Idee, wie ich das lösen könnte, dass auch die "Enter"-Eingabe
erkannt und mitversendet wird.

Danke schonmal im voraus
 
S

SlaterB

Gast
du hast nichts dazu geschrieben, wie der Server an msg rankommt,
oder wenn du gar noch einen dritten Zielclient hast, dann ist doch erstmal interessant, ob schon beim Server nichts ankommt oder erst bei der zweiten Übertragung,
auf solche Details achten!

> String text=inputField.getText();
> String msg="msg"+targetnumber+" "+c.number+","+text;

ist auch ziemlich schrecklich,
fange mit festen Daten an,
z.B

String msg = "test1\ntest2";
und dann schaue dir an, was der Server davon empfängt, erstmal Anzahl der Zeichen usw.
 
G

Gast

Gast
Oh, stimmt.

Also, der Server empfängt so:
Code:
   in=new BufferedReader(new InputStreamReader(cs.getInputStream()));
   .
   .
   msg=in.readLine();
cs ist der Socket den man von ServerSocket.accept() bekommt.

Und beim Server kommt auch nur die erste Zeile an.
Einen dritten Zielclient gibts nicht, ist momentan nur ein 1:1 Chat.
 
G

Guest

Gast
Grad noch "test1\ntest2" von Client an Server gesendet, erkennt er als 2 verschiedene msg's
 

Wildcard

Top Contributor
readLine liest einen Stream bis zum nächsten Zeilenumbruch.
Insofern sollte das Verhalten doch nachvollziehbar sein, oder?
 
K

Körby

Gast
readLine() liest nur eine Zeile, also bis zum nächsten Zeilenumbruch.
Am besten readLine() mehrmals in einer Schleife durchlaufen lassen.
 
G

Gast

Gast
Also, ich als Chatter1 mach die Eingabe in der JTextArea:

Code:
test1 //Enter
test2 //Enter
test3

Beim Server kommen nun 3 Strings

"msgtest1" (vereinfacht dargestellt, genauen String siehe oben)
"test2"
"test3"

an, wobei nur der erste beachtet wird, da ich eingehende Strings auf das "msg" im String
prüfe und somit erkenne, dass ein User eine Nachricht schreiben will.
Zeile 2 und 3 verpuffen somit.

Ich müsste nun also wissen, wie ich es am besten hinkriege, dass die Enter-Eingabe in der
JTextArea richtig über den Server an den Zieluser verschickt wird.

Ist irgendwie ein wenig doof zu beschreiben, hoffe es kommt trotzdem rüber.

Grad beim Schreiben ist mir die Idee gekommen, die Enter-Eingabe mit einem eindeutigen
String auszutauschen (also nicht \n, denn das hat ja auch nicht funktioniert), der dann, sobald
der String beim Zieluser, wieder umgewandelt wird.
Da müsste ich dann wissen, wie ich eine Enter-Eingabe erkennen kann, wenn ich eine JTextArea
auslese.
 
G

Gast

Gast
@Wildcard+Körby:
Ok, dann ist das schonmal verständlich.

Wenn man nun meine Idee (letzter Post, letzter Absatz) betrachtet, wird dann schon beim
Auslesen aus der JTextArea eine Enter-Eingabe als \n gespeichert?
Sprich, könnte ich mit .replace() das \n umändern?
 
G

Guest

Gast
probier mal was in der Art :

while ( (msg=in.readline)!=null ){

... (hier evtl. die einzelnen zeilen aneinanderhängen (addieren)

}
 
K

Körby

Gast
Wenn du auf msg abprüfst und das mit dem Zeilenumbruch nicht funktioniert probier mal was in diese Richtung:

Code:
String txt="";

while((msg = in.readLine()) != null) //msg bekommt in.readLine() zugewiesen und es wird auf Inhalt überprüft
{
    txt = txt + msg; //msg in txt speichern
}

Wenn du dies anstelle des msg = in.readLine() einfügst sollte es meiner Meinung nach funktionieren.
So sollte ein String trotz Zeilenumbrüchen vollständig eingelesn werden(gesammter übertragener String in txt).
 
G

Guest

Gast
@Gast+Körby:

Ok, das ist auch ne Idee.

Wobei ich natürlich

txt = txt + "\n" + msg;

schreiben muss (später beim Zielclient dann auch), ansonsten kommt ja
beim Zielclient

"test1test2test3"

und nicht

"test1
test2
test3"

an.

Aber rein zum Verständnis noch:
Ginge es theoretisch, dass ich nach dem Einlesen von der JTextArea

msg.replace("\n","irgendeinstring");

mache?
 

Wildcard

Top Contributor
Anonymous hat gesagt.:
Aber rein zum Verständnis noch:
Ginge es theoretisch, dass ich nach dem Einlesen von der JTextArea
Genau das wirst du tun müssen um zwischen neuer Nachricht und manuellem Umbruch unterscheiden zu können.
 
G

Gast

Gast
Alles klar. Testen kann ich es momentan nicht, aber wird dann schon funktionieren.
Zur Not meld ich mich nochmal ;)

Danke an alle Beteiligten!
 
G

Guest

Gast
Was anderes

InputStream in = server.getInputStream("");

getInputStream() in java.net.Socket cannot be applied to (java.lang.String)

Kann man mit der nicht einfach Strings üebrgeben. Musss man immer ein Buff. Reader machen ?
 
G

Gast

Gast
Also,

text.replace("\n","ZEILENUMBRUCH");

funktioniert irgendwie nicht. Es wird beim Server weiterhin nur die erste Zeile ausgewertet.

Auch der Versuch

txt = txt + "\n" + msg;

in einer while-Schleife ist gescheitert, da wurde dann plötzlich garnichts mehr übertragen.

Am liebsten wär mir, wenn die Lösung mit replace funktionieren würde, aber was mach ich da falsch?
 
G

Guest

Gast
Gast hat gesagt.:
Auch der Versuch

txt = txt + "\n" + msg;

in einer while-Schleife ist gescheitert, da wurde dann plötzlich garnichts mehr übertragen.

Am liebsten wär mir, wenn die Lösung mit replace funktionieren würde, aber was mach ich da falsch?

hast du denn in diesem Fall auch "txt" weitergegeben (und nicht msg!) ??
 
G

Gast

Gast
Ja, bzw. hab ich es so gemacht:

Code:
String txt=msg;
while((msg=in.readLine())!=null){
   txt=txt+"\n"+msg;
}
msg=txt;
 
G

Guest

Gast
Ganz vergessen, in dem Beispiel wurde schon vorher mal msg=in.readLine() ausgeführt, deswegen
weise ich es am Anfang gleich mal txt zu.
 
G

Guest

Gast
Nächster Versuch, Eingabe im Chat selbst: test1\ntest2

Diese Eingabe wird in beiden Chatfenstern genau so angezeigt, sprich das "\n" wird
korrekt zum Server und Zielclient geschickt, allerdings dort auch so ausgegeben.

Langsam bin ich verwirrt. Arbeite momentan mit der replace-Methode.

Kann man einen Zeilenumbruch noch irgendwie anders abfragen/darstellen ausser \n?
 
G

Gast

Gast
Hi, ich habe exakt das gleiche problem, arbeite auch gerade an der replace methode, ich versuche den Zeileumbruch mit einem "
" zu ersetzen, da ich am ende ein JEditorPane hab, der auch mit HTML umgehen kann, nur funzt das nicht so ganz :S
 
G

Gast

Gast
Ok, problem gelöst nach ungefähr 3 Stunden:

die String.replaceAll() methode anstatt der String.replace methode hats gebracht =)
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
chik Zeilenumbruch in einem JLabel Java Basics - Anfänger-Themen 6
B In einem Label "Zeilenumbruch" Java Basics - Anfänger-Themen 4
JavaBeginner22 TextArea, ohne Zeilenumbruch? Java Basics - Anfänger-Themen 4
JUNSKI Zeilenumbruch JLabel Java Basics - Anfänger-Themen 1
G Benutzereingaben durch Zeilenumbruch trennen und in Array individueller Größe speichern Java Basics - Anfänger-Themen 20
Dawinartor Klassen Zeilenumbruch in JOptionPane.showMessageDialog Java Basics - Anfänger-Themen 8
S \n nicht in Zeilenumbruch umwandeln Java Basics - Anfänger-Themen 5
S Zeilenumbruch mit Scanner erkennen Java Basics - Anfänger-Themen 9
M Zeilenumbruch ab der 10. Zahl Java Basics - Anfänger-Themen 11
C Stringbuffer auf Zeilenumbruch überprüfen Java Basics - Anfänger-Themen 14
F StringBuilder: Zeilenumbruch nach x Zeichen ohne Worttrennung Java Basics - Anfänger-Themen 1
C Zeilenumbruch für langes Strings Java Basics - Anfänger-Themen 2
I Zeilenumbruch im mailto-body Java Basics - Anfänger-Themen 5
D Zeilenumbruch- .txt-Ausgabedatei Java Basics - Anfänger-Themen 10
AssELAss Xml nur nach End-Tag Zeilenumbruch?? Java Basics - Anfänger-Themen 7
A Zeilenumbruch im Code Java Basics - Anfänger-Themen 5
E Zeilenumbruch!? Java Basics - Anfänger-Themen 3
A Zeilenumbruch im Jlabel Java Basics - Anfänger-Themen 11
M ArrayList || Bei Ausgabe nach jedem 10. Eintrag Zeilenumbruch Java Basics - Anfänger-Themen 7
M Zeilenumbruch in JLabel Java Basics - Anfänger-Themen 51
M Zeilenumbruch in JTextarea Java Basics - Anfänger-Themen 4
J Input/Output Datei - Zeilenumbruch einlesen Java Basics - Anfänger-Themen 10
B Zeilenumbruch (zweidim. Matrix) Java Basics - Anfänger-Themen 2
N Denkanstoß Zeilenumbruch Java Basics - Anfänger-Themen 9
M Zeilenumbruch JTextPane Java Basics - Anfänger-Themen 2
C jTable in .txt - versteckter Zeilenumbruch? Java Basics - Anfänger-Themen 6
T Datentypen Zeilenumbruch im String (2-dimensionales array) Java Basics - Anfänger-Themen 4
D Zeilenumbruch für XMl File Java Basics - Anfänger-Themen 3
C Zeilenumbruch verhindern / Clrscr ? Java Basics - Anfänger-Themen 3
T System.out.printf Zeilenumbruch nach x Stellen Java Basics - Anfänger-Themen 4
A Abfrage Zeilenumbruch+.+Zeilenumbruch Java Basics - Anfänger-Themen 17
c_sidi90 jTextarea kein Zeilenumbruch erlauben Java Basics - Anfänger-Themen 4
O TxT Zeilenumbruch Java Basics - Anfänger-Themen 4
E Zeilenumbruch von String schneiden Java Basics - Anfänger-Themen 13
E Zeilenumbruch in JButton mit Variable Java Basics - Anfänger-Themen 2
M Zeilenumbruch nach x Zeichen Java Basics - Anfänger-Themen 8
C textfield zeilenumbruch Java Basics - Anfänger-Themen 2
M "spezieller" Zeilenumbruch beim Kopieren Java Basics - Anfänger-Themen 3
S Zeilenumbruch awt.textarea Java Basics - Anfänger-Themen 16
M BufferedReader.readline() Unix/Windows Zeilenumbruch Java Basics - Anfänger-Themen 4
J Zeilenumbruch in Java Java Basics - Anfänger-Themen 2
J Zeilenumbruch in Java zwischen zwei Strings Java Basics - Anfänger-Themen 6
G Problem mit Zeichen Zeilenumbruch sieht aus wie(Eckige Null) Java Basics - Anfänger-Themen 4
V Zeilenumbruch bei der Eingabe verhindern Java Basics - Anfänger-Themen 6
W Text mit Zeilenumbruch zeichnen? Java Basics - Anfänger-Themen 5
S Weicher Zeilenumbruch? Java Basics - Anfänger-Themen 2
M Konsolenausgabe ohne Zeilenumbruch Java Basics - Anfänger-Themen 3
0 Zeilenumbruch funktioniert nicht Java Basics - Anfänger-Themen 4
N automatischer Zeilenumbruch Java Basics - Anfänger-Themen 3
N zeilenumbruch einfügen Java Basics - Anfänger-Themen 3
B Char Feld -> "Zeilenumbruch" Java Basics - Anfänger-Themen 5
M Am Ende eines Strings den Zeilenumbruch entfernen Java Basics - Anfänger-Themen 1
K Zeilenumbruch entfernen aus datei ?!?!? Java Basics - Anfänger-Themen 18
R Zeilenumbruch in einer Datei Java Basics - Anfänger-Themen 8
M sting komplett bearbeiten und nicht nach zeilenumbruch ende Java Basics - Anfänger-Themen 3
G Zeilenumbruch Java Basics - Anfänger-Themen 20
M JLabel - Zeilenumbruch Java Basics - Anfänger-Themen 2
G Automatischer Zeilenumbruch bei einer TextArea Java Basics - Anfänger-Themen 16
G Zeilenumbruch in String variable Java Basics - Anfänger-Themen 4
F Zeilenumbruch Java Basics - Anfänger-Themen 9
L Plattformunabhängiger Zeilenumbruch Java Basics - Anfänger-Themen 2
G Zeilenumbruch aus String entfernen ? Java Basics - Anfänger-Themen 13
J neuer Zeilenumbruch in Datei Java Basics - Anfänger-Themen 7
L Zeilenumbruch Java Basics - Anfänger-Themen 3
D zeilenumbruch feststellen Java Basics - Anfänger-Themen 8
D zeilenumbruch EOF Java Basics - Anfänger-Themen 2
D ausgabe verändern (statt zeilenumbruch leerzeichen) Java Basics - Anfänger-Themen 2
T BufferedWriter Zeilenumbruch Java Basics - Anfänger-Themen 2
P Borland Jbuilder X - Zeilenumbruch im Source Code ? Java Basics - Anfänger-Themen 2
D FileWriter write? Zeilenumbruch ? Java Basics - Anfänger-Themen 4
T JTable, DB, Zeilenumbruch Java Basics - Anfänger-Themen 25
K Zeilenumbruch in Datei schreiben Java Basics - Anfänger-Themen 2
V Zeilenumbruch in Tooltips Java Basics - Anfänger-Themen 13
T readLine ohne anschließenden Zeilenumbruch? Java Basics - Anfänger-Themen 2
G wie 'tabs' und 'zeilenumbruch' in textfile einbauen? Java Basics - Anfänger-Themen 5
G gesteuerter Zeilenumbruch Java Basics - Anfänger-Themen 2
G jEditorPane: inhalt ohne zeilenumbruch darstellen. wie? Java Basics - Anfänger-Themen 3
D Zeilenumbruch & Überschrift Java Basics - Anfänger-Themen 12
N Zeilenumbruch im StringTokenizer?? Java Basics - Anfänger-Themen 4
B Zeilenumbruch blos wie? Java Basics - Anfänger-Themen 4
M Zeilenumbruch im Textfeld Java Basics - Anfänger-Themen 5
G automatischer Zeilenumbruch Java Basics - Anfänger-Themen 5
K Mehrere Werte in einem Switch Case parallel überprüfen Java Basics - Anfänger-Themen 23
Zrebna Fragen zu einem Klassendiagramm Java Basics - Anfänger-Themen 8
S HashMap mehrere Keys zu einem Value Java Basics - Anfänger-Themen 3
S Java: Wie sortiere ich eine ArrayList benutzerdefinierter Objekte nach einem bestimmten Attribut? Java Basics - Anfänger-Themen 2
F 2x 16bit Werte zu einem 32bit und dann splitten mit 0xb Java Basics - Anfänger-Themen 1
J JSON mit einem JPanel Java Basics - Anfänger-Themen 3
F Einem GIT repository ein Projekt hinzufügen Java Basics - Anfänger-Themen 1
J Frage zu einem "Taschenrechner" code Java Basics - Anfänger-Themen 9
I Klassen von einem package laden, Statisches Feld auslesen und Objekt erstellen Java Basics - Anfänger-Themen 8
J Schlüsselworte Prüfen, ob ein bestimmtes, ganzes Wort in einem String enthalten ist. Java Basics - Anfänger-Themen 6
P Probleme mit NetBeans: Wie lässt sich jar. Datei an einem MacBook öffnen Java Basics - Anfänger-Themen 21
J Auf einem JLabel Linien Malen Java Basics - Anfänger-Themen 1
I @Entity Klassen, Service Beans etc. aus einem Share Projekt beziehen? Java Basics - Anfänger-Themen 26
R Images aus einem Array ausgeben Java Basics - Anfänger-Themen 3
XWing Randomizer mit einem String Java Basics - Anfänger-Themen 2
D OOP Array einem Objekt zuweisen Java Basics - Anfänger-Themen 2
O Zahlen aus einem char-array per char + Zeichen addieren Java Basics - Anfänger-Themen 2
S Bestimmte werte aus einem Array löschen Java Basics - Anfänger-Themen 2

Ähnliche Java Themen

Neue Themen


Oben