我有一個類似的問題:
給定一個字串和一個需要替換的字符和位置,例如:
輸入。 string: str = ABCDEFGH, prefix = "_" and position = 3, 輸出。 結果 = AB_CDE_FGH
輸入。 string: str = 10000000, prefix = "_" and position = 3, 輸出。 結果 = 10_000_000
輸入。 string: str = 10000000, prefix = "_" and position = 2, 輸出。 結果 = 10_00_00_00
這是我的代碼:
fun convertNumberByCharacter( pattern: String,position: Int,字符。String):String{
val strBuilder = StringBuilder()
val arr = pattern.toCharArray()
return if (arr.size> position){
for (i in 0..arr.size-1){
if(i%position==0){
strBuilder.append(characters)
}
strBuilder.append(arr[i])
}
strBuilder.toString()
}else{
模式
}
注意:在這個問題上不能使用DecimalFormat和NumberFormat。
請問,誰能幫助我。謝謝你。
uj5u.com熱心網友回復:
試試這個
val str = "ABCD"
val prefix = "_"/span>
val position = 3
val result = StringBuilder()
val offset = position - str.length % position
for (i in str.indices) {
if (i != 0 && (i offset)% position == 0) {
result.append(prefix)
}
result.append(str[i])
}
println(result)
我認為reverse字串,然后回圈,在某個位置添加前綴,然后再次reverse也可以解決這個問題
uj5u.com熱心網友回復:
我認為完成這個任務的最干凈的方法是使用chunked()和joinToString()的組合。不幸的是,stdlib只提供了chunked(),從左邊開始計算,而我們在這里需要從右邊開始計算。盡管如此,我認為實作chunkedRight()并將其與joinToString()一起使用更為簡潔。
fun CharSequence. chunkedRight(size: Int)。List<String> {
if (isEmpty()) return emptyList()
val fullChunks = length / size
val firstSize = length - fullChunks * size
//span class="hljs-comment">容量可能大了一個 - 這里沒有問題。
return ArrayList<String>(fullChunks 1).apply{
if (firstSize > 0) {
add(substring(0, firstSize))
}
(firstSize直到length step size).forEach {
add(substring(it, it size))
}
}
}
或者說:
fun CharSequence. chunkedRightSequence(size: Int): Sequence< String> {
if (isEmpty()) return emptySequence()
val firstSize = (length - 1) % size 1.
return sequenceOf(substring(0, firstSize)
(firstSize直到length step size).asSequence()
.map { substring(it, it size) }
}
然后我們可以這樣使用它:
println("ABCDEFGH".chunkedRight(3).joinToString("_")
println("10000000".chunkedRight(3).joinToString("_")
println("10000000".chunkedRight(2).joinToString("_")
或者我們可以為此創建一個專門的函式。
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/333331.html
標籤:
上一篇:我如何將波斯數字轉換為英文數字?
