Seit java 8 String.chars() gibt einen IntStream zurück, und die beste Antwort, die ich gefunden habe, wenn Sie einen Strom von Zeichen möchten, ist durch Casting i -> (char) ich, ich frage mich, ob jemand weiß, ob dies richtig funktioniert UTF-16-Zeichen, die tatsächlich 8 Bytes belegen?Funktioniert Java 8 String.chars() ordnungsgemäß mit 8-Byte-Zeichen?
Antwort
Abhängig von Ihrer Definition von richtig: Nein, tut es nicht.
Ein Java char
ist eine 16-Bit-UTF-16-Code-Einheit. Alles, was länger ist, wird als zwei char
(as "surrogate pairs") dargestellt. Das gleiche gilt für String#length()
. Es wird die Nummer char
zurückgegeben, so dass Ihr "langes Zeichen" als zwei zählt.
Der Grund dafür, dass IntStream
zurückgegeben wird, ist just to not need to introduce a CharStream
class. Die enthaltenen Daten befinden sich immer noch im 16-Bit-Bereich char
.
jedoch gibt es zusätzlich zu .codePoints()
chars()
, die die 32-Bit-Unicode-Codepunkte zurückkehrt (auch als IntStream
).
Rechts. Aber was du sagst ist, ich muss die Ints selbst analysieren, richtig? – tumunu
Was meinst du mit "parse"? – Thilo
Mit "parse" meine ich, wenn ich den nächsten int-Wert im IntStream ansehe, muss ich den Wert untersuchen, um zu sehen, ob das int, nachdem es tatsächlich Teil desselben char ist. – tumunu
- 1. Java "enthält" nicht ordnungsgemäß funktioniert
- 2. scrollToRowAtIndexPath funktioniert nicht ordnungsgemäß?
- 3. GDI funktioniert nicht mit OpenGL ordnungsgemäß
- 4. JUNIT4 funktioniert nicht unter Java 8
- 5. Funktioniert XLConnect mit R 3.3.1 und Java 8?
- 6. Java 8 LocalDate Konvertierung mit Jackson funktioniert nicht
- 7. Array nicht ordnungsgemäß looping Java
- 8. Warum funktioniert isAnnotationPresent zwischen Java 7 und Java 8 anders?
- 9. Youtube Abonnement nicht ordnungsgemäß funktioniert
- 10. Warum funktioniert NSFileManager nicht ordnungsgemäß?
- 11. Word Count mit Java 8
- 12. Warum funktioniert nicht! Int() ordnungsgemäß?
- 13. Mit forEach in Java 8
- 14. Freemarker Probleme mit Java 8
- 15. Java 8 forEach mit Index
- 16. Maven Fehler mit Java 8
- 17. Tomcat 8 Maven Plugin für Java 8
- 18. Lock Screen für Android funktioniert nicht ordnungsgemäß mit Android
- 19. Java 8 Map.Entry Komparator
- 20. Verketten Verbraucher Java 8
- 21. Warum funktioniert mein Benutzerregistrierungsformular nicht ordnungsgemäß?
- 22. String-Literal schließt nicht ordnungsgemäß in Java
- 23. @WebServlet Annotation funktioniert nicht mit Tomcat 8
- 24. PHP-Klassen-Methode verhindert xml ordnungsgemäß funktioniert
- 25. Lesetextdatei mit utf-8-Codierung mit Java
- 26. So überschreiben Sie toString() ordnungsgemäß in Java?
- 27. HttpServletRequest.getRemoteAddr() leer für Tomcat 8 Java 8
- 28. Cobertura-Maven-Plugin mit Java 8
- 29. Java 8 Lieferant Ausnahme
- 30. Java UTF-8-Codierung
8 Bytes? Passen nicht alle Unicode-Zeichen in höchstens zwei UTF-16-Code-Einheiten (d. H. 4 Bytes)? – Thilo