Wieloliniowy blok tekstowy Java 13 z """
ogranicznikami staje się dobrze znany.
Mam jednak powtarzającą się potrzebę, w której potrzebuję całych akapitów bez osadzonych znaków nowej linii.
Innymi słowy, następujący fragment kodu:
String paragraph =
"""
aaaa bbbb cccc
dddd eeee ffff
gggg hhhh iiii
""""
System.out.println(paragraph);
tworzy następujące, jak można się spodziewać:
aaaa bbbb cccc
dddd eeee ffff
gggg hhhh iiii
... co zwykle jest niezwykle przydatne. Jednak w moim przypadku, w przypadku szczególnie dużych akapitów, potrzebuję go do tego:
aaaa bbbb cccc dddd eeee ffff gggg hhhh iiii
(.... i zajmij się przepływem tekstu później.)
Czy istnieje sposób ustalenia parametru „brak nowej linii” dla funkcji potrójnego cudzysłowu?
java
string
java-13
preview-feature
życie
źródło
źródło
"line" + "line" + "line"
itp i bez EOL pokazano w górę. Unikanie takiej tępej i trudnej do utrzymania składni jest całkowicie w tyle"""
.Odpowiedzi:
Projektanci tej funkcji również spełnili to wymaganie (patrz „Nowe sekwencje specjalne” w JEP368). Tak więc dzięki najnowszej kompilacji wczesnego dostępu dla JDK 14 możesz użyć znaku
\
końca, aby uciec z nowej linii na końcu linii:Wydruki:
źródło
"aaaa bbbb cccc "
,+"dddd eeee ffff "
i+"gggg hhhh iiii "
każdy w wyraźnej linii…\n
znaki ucieczki nadal działają w blokach tekstowych.readString
, osadzone zasoby są o wiele łatwiejsze w obsłudze. Nigdy nie chciałem integrować całych akapitów z kodem źródłowym, tylko rzeczy we / wy były denerwujące.Możesz używać
String.lines
wprowadzonego od Java-11 jako:Uzupełnieniem i za co warto, oto zrzut ekranu z wykonania JShell dwóch różnych bloków kodu:
źródło
String output = paragraph.replaceAll("[\n\r]", "");
\s
w"""
bloku) pozwala mi mieszać wiersze bez EOL z liniami, w których tak naprawdę chcę twardego powrotu (np. Między akapitami itp.)Rzeczywiście, znalezienie dobrej odpowiedzi w Javie 13 nie jest łatwe (może nawet niemożliwe), ale myślę, że Jorn Vernee z wdzięcznością zajął się tym problemem w swojej odpowiedzi (nowe sekwencje specjalne w Javie 14 stanowią akceptowalne rozwiązanie).
Aby rozwinąć kilka wymienionych problemów:
Uwaga dla moderatora: Wiem, że ta odpowiedź potencjalnie narusza wytyczne (nie odnoszę się do pytania i odpowiadam na komentarze innych użytkowników), ale myślę, że powinna istnieć przestrzeń do dyskusji na tematy, które wciąż trwają (nie zapominajmy, że bloki tekstowe są w trybie „drugiego podglądu” ).
źródło
paragraph.replaceAll("\\n","")
powinien wykonać dla ciebie pracę.źródło
""" line line line """.replaceAll("\\n","");
nie można tego teraz zweryfikować.\s
zdolność JDK-14. Co jeśli chcę kilka akapitów bez podziałów linii, ale między wierszami.