我得到一個包含電話號碼的字串作為輸入。該字串如下所示:
79998886666
但我需要將其轉換為這種形式:
7 999 888-66-66
我嘗試了幾種方法,但我得到的最新方法如??下所示:
private fun formatPhone(phone: String): String {
val prefix = " "
val countryCode = phone.first()
val regionCode = phone.dropLast(7).drop(1)
val firstSub = phone.dropLast(4).drop(4)
val secondSub = phone.dropLast(2).drop(7)
val thirdSub = phone.drop(9)
return "$prefix$countryCode $regionCode $firstSub-$secondSub-$thirdSub"
}
但在我看來,這種方法看起來很奇怪,而且效率不高。如何以不同的方式解決這個問題?
uj5u.com熱心網友回復:
您可以在這里使用正則運算式替換:
val regex = """(\d)(\d{3})(\d{3})(\d{2})(\d{2})""".toRegex()
val number = "79998886666"
val output = regex.replace(number, " $1 $2 $3-$4-$5")
println(output) // 7 999 888-66-66
uj5u.com熱心網友回復:
您可以創建一個幫助函式,一次回傳字串的塊:
private fun formatPhone(phone: String): String {
fun CharIterator.next(count: Int) = buildString { repeat(count) { append(next()) } }
return with(phone.iterator()) {
" ${next(1)} ${next(3)} ${next(3)}-${next(2)}-${next(2)}"
}
}
您的原始代碼可以通過使用substring而不是drop/來簡化并提高性能dropLast。
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/486311.html
