Få ny linje til at virke I JavA

Tags:    java

Hej alle sammen, jeg prøver for sjov at arbejde med TextFlow og text elements inden i. Men jeg kan ikke få nye linjer til at virker i min kode:
Fold kodeboks ind/udJava kode 




4 svar postet i denne tråd vises herunder
0 indlæg har modtaget i alt 0 karma
Sorter efter stemmer Sorter efter dato
Skal du ikke bare splitte strengen pr. nylinje-tegn: "\\n", i stedet for ved: "\\s"? Og hvorfor har du egentlig firkantede parenteser rundt om "\\s", når du alligevel 'escaper' indholdet af dem?
Sidst men ikke mindst, ville jeg nok lave en liste af de ord, som skal indgå i strengen i stedet for at kopiere "s.contains();" N gange. Dernæst skal man så løbe listen igennem og søge i den opdelte streng, som du lavede til at starte med.






Indlæg senest redigeret d. 14.12.2014 18:42 af Bruger #18836
Gætter på at det er Text og TextFlow fra JavaFX du arbejder med.

Som Jannik siger skal du ikke bruge "[" og "]" i dette tilfælde. De tegn bruges til at lave character classes, som er en mængde af tegn. Men \s er allerede en mængde af tegn, de tegn som betegner whitespace.

Når du splitter strengene forsvinder selve teksten du splitter med, så hvis du splitter på \s forsvinder alt whitespace inklusiv newline. Derfor bliver de ikke tegnet.

For at beholde newlines kan du splitte først udelukkende på dem og manuelt genindsætte newlines. For hver linje kan du så splitte på \s for at finde tokens.

En mindre detalje er at i stedet for at splitte på \s bør du splitte på \s+. Så kommer der færre tomme arrays hvis der f.eks. er mere end 1 whitespace mellem to. Visuelt gør det nok ingen forskel men du slipper for at lave en masse Text objekter med tomme strenge.

Jeg har ikke testet koden nedenunder. Men først splittes der på linje. Linje splittes for token med \s+ og der laves Text-objekter. Efter alle tokens på den linje er behandlet indsættes der en newline Text objekt.

Fold kodeboks ind/udJava kode 




Indlæg senest redigeret d. 15.12.2014 00:41 af Bruger #14645
Gætter på at det er Text og TextFlow fra JavaFX du arbejder med.

Som Jannik siger skal du ikke bruge "[" og "]" i dette tilfælde. De tegn bruges til at lave character classes, som er en mængde af tegn. Men \s er allerede en mængde af tegn, de tegn som betegner whitespace.

Når du splitter strengene forsvinder selve teksten du splitter med, så hvis du splitter på \s forsvinder alt whitespace inklusiv newline. Derfor bliver de ikke tegnet.

For at beholde newlines kan du splitte først udelukkende på dem og manuelt genindsætte newlines. For hver linje kan du så splitte på \s for at finde tokens.

En mindre detalje er at i stedet for at splitte på \s bør du splitte på \s+. Så kommer der færre tomme arrays hvis der f.eks. er mere end 1 whitespace mellem to. Visuelt gør det nok ingen forskel men du slipper for at lave en masse Text objekter med tomme strenge.

Jeg har ikke testet koden nedenunder. Men først splittes der på linje. Linje splittes for token med \s+ og der laves Text-objekter. Efter alle tokens på den linje er behandlet indsættes der en newline Text objekt.

Fold kodeboks ind/udJava kode 


Det virker næsten. Bortset fra den laver en ny linje per bogstav/tal så teksten vil istedet for ligne noget som:
Fold kodeboks ind/udKode 


Her er min fulde kode:
Fold kodeboks ind/udJava kode 




Det lyder meget overraskende at de skulle give noget forskelligt. De eneste to forskelle, er at du har en ekstra println inde i løkken, og kalder autosize() først. Så prøvede lige dem selv og ved mig giver begge løsninger samme resultat.

Men glad for at høre du fik det til at virke.



Indlæg senest redigeret d. 15.12.2014 22:16 af Bruger #14645
t