kotlin 中trim{it <= ' '} 和trim 之间的区别?

ff *_* .n 8 android trim kotlin

在 kotlin 中修剪删除空格 int 前导和尾随,但是当 android studio 将 java 代码转换为 kotlin 时,将 java 中的 trim() 转换为 kotlin 中的 trim{it <= ' '} 时将其更改为修剪,这没有区别。修剪和修剪{it <= ' '} 之间有什么区别??

jep*_*bio 12

根据文档:https : //kotlinlang.org/api/latest/jvm/stdlib/kotlin.text/trim.html

fun 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)
Run Code Online (Sandbox Code Playgroud)

这输出:

      


Run Code Online (Sandbox Code Playgroud)

他们都清理了这个字符。正如@AlexeyRomanov 所说,kotlin 将使用isWhitespace方法返回 true 的字符理解为空白字符。因此,这it <= ' '是使其仅修剪与 java 相同的字符,而不是根据 Unicode 标准修剪其他空白字符。

如果我们测试例如\u00A0字符:

val kotlin4 = "\u00A0\u00A0".trim()
println(kotlin4)
   
val kotlin5 = "\u00A0\u00A0".trim{it <= ' '}
println(kotlin5)
Run Code Online (Sandbox Code Playgroud)

我们可以看到输出的差异:


  
Run Code Online (Sandbox Code Playgroud)

您可以在kotlin playground 中测试它。