în rezumat: strip()
este o evoluție „conștient de Unicode” din trim()
.
RSR: JDK-8200378
DIV ID = „381535A326” >
String
String :: Trim a existat din primele zile de Java atunci când Unicode nu a evoluat complet la standardul pe care îl folosim astăzi.
definiția de spațiu folosit de String :: Trim este orice punct de cod mai mic sau egal cu punctul de cod spațiu (\ u0020), denumit în mod obișnuit caractere ASCII sau ISO.
rutine de tăiere compatibile cu Unicode ar trebui să fie utilizate Caracter :: ISWHITESPACE (INT).
În plus, dezvoltatorii nu au putut să elimine în mod specific spațiul gol de sângerare sau să elimine în mod specific spațiul gol la sfârșit.
P > Soluție
Introduceți metoda S de tăiere care ia în considerare blank-urile Unicode și oferă un control suplimentar numai la început sau la sfârșit.
divid id = „0180C64E92″>
O caracteristică comună a acestor noi metode sunt acestea O altă definiție diferită (cea mai recentă „” spațiu gol „decât metodele vechi ca String.trim()
. Eroare JDK-8200373.
DIV id = „381535A326″>
curent Javadoc pentru șir: Trim nu clarifică ce definiție a „spațiu” este utilizată în cod. Cu metode suplimentare de tăiere care vin în viitorul apropiat, care utilizează o definiție diferită a spațiului, clarificarea este imperativă. String :: Trim Utilizează definiția spațiului ca orice punct de cod care este mai mic sau egal cu punctul de cod al caracterului spațial (\ u0020). Metodele de tăiere mai noi vor folosi definiția spațiului (alb) ca orice punct de cod care returnează adevărat atunci când este trecut la caracterul: predicat din spațiul gol.
divid id = „0180C64E92″>
Metoda isWhitespace(char)
a fost adăugat la Character
cu JDK 1.1, dar metoda Nu a fost introdus în clasa Character
până la JDK 1.5. Ultima metodă (care acceptă un parametru de tip int
) a fost adăugată pentru a admite caractere suplimentare. Comentariile lui Javadoc pentru clasa Character
setul de caractere de U + 0000 la U + FFFF este uneori denumit planul multilingv de bază (BMP). Caracterele ale căror puncte de cod sunt mai mari decât U + FFFF sunt numite caractere suplimentare. Platforma Java utilizează reprezentarea UTF-16 în matricele de caractere și clasele cu șir și șuruburi. În această reprezentare, caracterele suplimentare sunt reprezentate ca o pereche de valori char … o valoare de caractere, prin urmare, reprezintă puncte de cod ale nivelului multilingv de bază (BMP), inclusiv punctele de cod înlocuitor sau unitățile de cod ale UTF-16 codificare. O valoare INT reprezintă toate punctele de cod Unicode, inclusiv punctele de cod complementare. … metodele care acceptă doar o valoare de caractere nu pot admite caractere suplimentare. … Metodele care acceptă o valoare int suportă toate caracterele Unicode, inclusiv caracterele complementare.
div Id = „0180C64E92″>
openjdk schimbare
Comparație comparativă între iv id = „bc48c8a2c”
și strip()
– de ce șir.strip () este de 5 ori mai rapid decât șir.trim () pentru un lanț gol în Java 11