Дмитрий Позолота Asked:2022-06-24 19:31:34 +0000 UTC2022-06-24 19:31:34 +0000 UTC 2022-06-24 19:31:34 +0000 UTC 如何从kotlin中的字符串中替换部分元素? 772 有一个格式为+7 (960) 454 343 88的字符串。如何用符号#替换某些元素,使总数为+7 (960) ## ##3 88? replaceRange方法用单个字符替换所有元素,包括空格 kotlin 2 个回答 Voted Best Answer Alex_Skvortsov 2022-06-24T19:52:01Z2022-06-24T19:52:01Z 写了一个更通用的版本 fun String.replaceCharsByCondition( with: Char, startIndexInclusive: Int, endIndexExclusive: Int, condition: (Char) -> Boolean ): String { val newStringBuilder = StringBuilder() forEachIndexed { i, char -> if (condition(char) && i >= startIndexInclusive && i < endIndexExclusive) { newStringBuilder.append(with) } else { newStringBuilder.append(char) } } return newStringBuilder.toString() } 为您的案例调用示例: val phone = "+7 (960) 454 343 88" text.text = phone.replaceCharsByCondition( with = '#', startIndexInclusive = 9, endIndexExclusive = 15, condition = { it.isDigit() } ) Эникейщик 2022-06-24T19:44:03Z2022-06-24T19:44:03Z 让我们使用一个肮脏的hack,叫做...我不知道什么名字,只是申请没有名字: val new_text = text.replaceRange(9, 15, "## ##")
写了一个更通用的版本
为您的案例调用示例:
让我们使用一个肮脏的hack,叫做...我不知道什么名字,只是申请没有名字: