在kotlin中,trim移除空格int引导和尾随,但当android将java代码转换为kotlin时,将java中的trim()转换为trim{it <= '}在kotlin中,当将此更改为trim时,没有什么区别。修剪和修剪{it <=‘}有什么区别??
发布于 2020-03-27 13:30:27
根据文档:https://kotlinlang.org/api/latest/jvm/stdlib/kotlin.text/trim.html
String.trim():String返回一个删除了前导和尾随空格的字符串。
it <= ' '将删除所有“不可打印”字符,其ascii码小于或等于空格(ascii十进制= 32)作为回车,行提要.
我刚刚测试了许多这样的角色:
val kotlin = "\t\t"
println(kotlin)
val kotlin2 = "\t\t".trim()
println(kotlin2)
val kotlin3 = "\t\t".trim{it <= ' '}
println(kotlin3)这一产出如下:
他们都清理了这个角色。正如@AlexeyRomanov所说,kotlin将使用isWhitespace方法返回true的字符理解为空白字符。因此,根据Unicode标准,it <= ' '只能修剪与java相同的字符,而不是其他空格字符。
例如,如果我们测试\u00A0字符:
val kotlin4 = "\u00A0\u00A0".trim()
println(kotlin4)
val kotlin5 = "\u00A0\u00A0".trim{it <= ' '}
println(kotlin5)我们可以看到产出的差异:
您可以在科林游乐场中测试它。
发布于 2020-03-27 16:03:06
Java的文档说
否则,如果字符串中没有代码大于“\u0020”的字符,则返回一个表示空字符串的string对象。 否则,让k作为代码大于'\u0020‘的字符串中第一个字符的索引,并让m作为字符串中代码大于'\u0020’的最后一个字符的索引。返回一个String对象,表示该字符串的子字符串,该字符串以索引k处的字符开始,以索引m处的字符结束--即this.substring(k,m+ 1)的结果。
所以条件就是{ it <= ' ' } ( it是字符串中的一个字符)。
Kotlin而不是使用
public fun CharSequence.trim(): CharSequence = trim(Char::isWhitespace)对于非破缺空间\u00A0、Ogham空格标记\u1680等是正确的,对于' '以下的一些字符(例如\u0001)是假的。
https://stackoverflow.com/questions/60886913
复制相似问题