что это "it <= ''" в функции строчной строки означает здесь

Наличие java-кода для обрезки строки

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

при обложке kotlin, я думал, что это должен быть код kotlin, чтобы обрезать ведущее пространство и конечное пространство.

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

но IDE генерирует этот код

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

Что здесь такое, это какой-то символ меньше, чем?

String#trim() удаляет все кодовые точки между '\u0000' (NUL) и '\u0020' (SPACE) из начала и конца строки.

Kotlin's CharSequence.trim() по умолчанию удаляет только CharSequence.trim() и конечные пробелы (символы, соответствующие Char.isWhitespace , который является Char.isWhitespace Character#isWhitespace(char) ). Для того же поведения, что и Java, среда IDE сгенерировала предикат, который соответствует тем же символам, что и Java.

Эти символы включают пробелы ASCII, но также включают контрольные символы.

 '\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' ␠ (' ') 

функция trim в kotlin позволяет предикат, так что обрезка в java-коде (удаляет белые пробелы) такая же, как .trim { it <= ' ' } Вы можете использовать .trim() в kotlin тоже

См. Перегрузку String.trim которая берет predicate . Говорят, что он обрезает ведущие и конечные символы от строки, которая соответствует предикату. В вашем случае он обрезает символы, которые меньше или равны ' ' (пробелы)».

Это как раз работает java.lang.String#trim .

Он сравнивает ASCII каждого символа, который '' (пробел). Если ASCII символа меньше или равно ASCII в '' (пробеле), он удаляется.

Если вы посмотрите на таблицу ASCII , символы ниже пространства (ASCII 32) являются непечатаемыми управляющими символами. Таким образом, все печатаемые символы, кроме пробела, находятся над ASCII пространства (что равно 32). Поэтому, если символы, ASCII которых меньше или равны значению '' (пробела), удаляются, мы получим оставшуюся строку без начального и конечного пробелов.

Так работает trim() Java. Тем не менее, вы можете просто использовать trim() также в Kotlin:

 titleEt.text.toString().trim() 
Intereting Posts
Соответствие нестандартных типов в ElementUnion Наблюдает личную окончательную ошибку Inject В чем разница между Foo :: class.java и Foo :: javaClass? Firebase Android – создайте пользователя с помощью электронной почты и пароль в Kotlin IlegalStateException, где выбрасывается при попытке получить значения из экземпляра RoomDatabase Простой способ отображения моделей данных в модели домена Spring Data Elasticsearch с полем скриптов с данными класса данных Kotlin приводит к проблеме сериализации Джексона Kotlin / Android – KotlinReflectionInternalError в классе данных с лямбдой Функции расширения Котлина внезапно требуют уровня api 24 Как избежать метода класса фабрики kotlin по подтипу? В Android Studio, как мне изменить соглашения об именах Kotlin? Как я могу запустить проверку кода AndroidStudio в терминале Как отладить ошибку «Не удалось разрешить ошибку com.google.android:android» в Anko Как найти все классы в пакете, используя отражение в kotlin Котлин аргументы по умолчанию в ошибке интерфейса?