In sintesi: strip()
è un’evoluzione “consapevole dell’UNICODE” di trim()
.
CSR: JDK-8200378
Problema
String :: Trim è esistito dai primi giorni di Java quando Unicode non era completamente evoluto per lo standard che usiamo oggi.
La definizione Di spazio utilizzato da String :: Trim è qualsiasi punto di codice inferiore o uguale al punto del codice spazio (\ u0020), comunemente indicato come caratteri ASCII o ISO Controllo.
Trim Routine compatibili con Unicode dovrebbe usare Carattere :: ISHITHESPACE (INT).
Inoltre, gli sviluppatori non sono stati in grado di eliminare specificamente lo spazio vuoto del sanguinamento o eliminando specificamente lo spazio vuoto alla fine.
Soluzione
Enter Method S di ritaglio che considera gli spazi vuoti Unicode e forniscono un ulteriore controllo di solo all’avvio o alla fine.
una caratteristica comune di questi nuovi metodi è che usano Una definizione diversa (più recente “” spazio vuoto “dei vecchi metodi come String.trim()
. Errore JDK-8200373.
L’attuale Javadoc for string :: Trim non è chiaro quale definizione di “spazio” è utilizzata nel codice. Con ulteriori metodi di ritaglio che arrivano nel prossimo futuro che utilizzano una diversa definizione di spazio, il chiarimento è imperativo. String :: Trim utilizza la definizione di spazio come qualsiasi punto di codice è inferiore o uguale al punto del codice del carattere spaziale (\ u0020). I metodi di ritaglio più recenti utilizzeranno la definizione di spazio (bianco) come qualsiasi punto di codice che restituisce true quando è passato al personaggio: predicato dallo spazio vuoto.
Il metodo isWhitespace(char)
è stato aggiunto a Character
con JDK 1.1, ma il metodo isWhitespace(int)
Non è stato introdotto nella classe Character
fino a JDK 1.5. L’ultimo metodo (che accetta un parametro di tipo int
) è stato aggiunto per ammettere caratteri supplementari. I commenti di Javadoc per la classe Character
Definisci caratteri supplementari (solitamente modellati con “punti codici” basato su caratteri int) contro caratteri BMP (tipicamente modellati con un singolo carattere):
Il set di caratteri di U + 0000 a U + FFFF è a volte indicato come il piano multilingue di base (BMP). I caratteri i cui punti di codice sono maggiori di U + FFFF sono chiamati caratteri supplementari. La piattaforma Java utilizza la rappresentazione UTF-16 negli array di caratteri e le classi stringa e stringbuffer. In questa rappresentazione, i caratteri supplementari sono rappresentati come una coppia di valori di caratteri … un valore di caratteri, quindi, rappresenta i punti di codice del livello multilingue di base (BMP), compresi i punti di codice sostitutivi o le unità di codice dell’UTF-16 codifica. Un valore int rappresenta tutti i punti di codice Unicode, inclusi i punti di codice complementari. … I metodi che accettano solo un valore char non possono ammettere caratteri supplementari. … I metodi che accettano un valore int supportano tutti i caratteri Unicode, inclusi caratteri complementari.
OpenJDK Bearkment.
Confronto comparativo tra trim()
e strip()
– Perché String.strip () è 5 volte più veloce di String.trim () per una catena vuota in Java 11