2017-08-12 1 views
3

Avoir un code java pour couper une chaînece qui est ce « il <= ' « » en fonction de chaîne garniture signifie ici

String title = titleEt.getText().toString().trim(); 

lorsque la couverture à Kotlin, je pensais que cela devrait être le code Kotlin pour couper la espace principal et espace de fuite.

val title = titleEt.text.toString().trim() 

mais l'IDE génère ce code

val title = titleEt.text.toString().trim { it <= ' ' } 

Quel est ce {il < = ''} ici, est-il moins omble chevalier et que ' « ?

Répondre

5

Java String#trim() supprime tous les points de code entre '\u0000' (NUL) et '\u0020' (ESPACE) à partir du début et de la fin de la chaîne.

Le CharSequence.trim() de Kotlin supprime uniquement les espaces de début et de fin par défaut (caractères correspondant à Char.isWhitespace, soit Character#isWhitespace(char)). Pour le même comportement que Java, l'EDI a généré un prédicat qui correspond aux mêmes caractères que Java aurait coupé.

Ces caractères incluent des espaces ASCII, mais incluent également des caractères de contrôle.

'\u0000' ␀ ('\0') 
'\u0001' ␁ 
'\u0002' ␂ 
'\u0003' ␃ 
'\u0004' ␄ 
'\u0005' ␅ 
'\u0006' ␆ 
'\u0007' ␇ ('\a') 
'\u0008' ␈ ('\b') 
'\u0009' ␉ ('\t') 
'\u000A' ␊ ('\n') 
'\u000B' ␋ ('\v') 
'\u000C' ␌ ('\f') 
'\u000D' ␍ ('\r') 
'\u000E' ␎ 
'\u000F' ␏ 
'\u0010' ␐ 
'\u0011' ␑ 
'\u0012' ␒ 
'\u0013' ␓ 
'\u0014' ␔ 
'\u0015' ␕ 
'\u0016' ␖ 
'\u0017' ␗ 
'\u0018' ␘ 
'\u0019' ␙ 
'\u001A' ␚ 
'\u001B' ␛ 
'\u001C' ␜ 
'\u001D' ␝ 
'\u001E' ␞ 
'\u001F' ␟ 
'\u0020' ␠ (' ') 
0

Voir la surcharge String.trim qui prend predicate. Il est dit de couper les caractères de début et de fin de la chaîne qui correspondent au prédicat. Dans votre cas, les caractères inférieurs ou égaux à ' ' (les espaces) seront coupés.

C'est exactement comme cela que fonctionne java.lang.String#trim.

2

fonction garniture en Kotlin permet un prédicat si garniture dans le code java (supprime les espaces blancs) est le même que .trim { it <= ' ' } Vous pouvez utiliser .trim() dans Kotlin trop

0

Il compare l'ASCII de chaque ombles qui « » (espace). Si l'ASCII du caractère est inférieur ou égal à celui de l'ASCII de '' (espace), il est supprimé.

Si vous regardez le ASCII table, les symboles sous l'espace (ASCII 32) sont des caractères de contrôle non imprimables. Donc, tous les caractères imprimables autres que l'espace sont au-dessus de l'ASCII de l'espace (qui est de 32). Donc, si les caractères dont l'ASCII est inférieur ou égal à celui de '' (espace) sont supprimés, nous obtiendrons la chaîne restante sans les espaces de début et de fin.

Voici comment le trim() de Java fonctionne. Néanmoins, vous pouvez simplement utiliser trim() également dans Kotlin:

titleEt.text.toString().trim()