我需要將一個字串分成幾個部分,每個部分包含N個字母。 比如說
str = "Hello World! Kotlin真了不起!"
split_into_n(str, 3) = ["Hel"/span>, "lo"/span>, "Wor"/span>, "ld! ", " Ko", " tli", " n i", "s a", "maz", "ing", " ! "]
我已經嘗試了regex,但似乎并不成功。 我試過使用拆分方法,但也不起作用。 希望得到任何幫助:)
uj5u.com熱心網友回復:
chunked()擴展函式正是這樣做的:
val str = "Hello World! Kotlin真了不起!"
println(str.chunked(3)
// [Hel, lo , Wor, ld!, Ko, tli, n i, s a, maz, ing, !]
uj5u.com熱心網友回復:
結果陣列的長度將是原始陣列的長度除以N,但是如果有余數,你需要一個額外的元素。
val result=Array<String>(str.length/n (str.length%n).sign()
str.length/n是在原始長度不能被n分割的情況下,不含最后一個元素的結果長度。
str.length%n如果長度可以被n分割,則結果為0,如果不可以,則為正數(余數)。
sign如果值是正數,則回傳1;如果值是0,則回傳0。
之后,你可以直接用子字串填充陣列:
for(i in 0..result.length){
result[i]=str.substring(i*n,min((i 1)*n, str.length))
}
這是在產生的陣列的所有索引上回圈,并將相應的元素設定為str的子串。
開始索引是所產生的陣列的索引乘以3,結束索引是下一個元素之前的索引(或最后的總長度)。
結合起來,它看起來就像這樣:
import kotlin.math
fun splitIntoN(str,n){
val result=Array<String>(str.length/n (str.length%n).sign())
for(i in 0.__span>.result.length){
result[i]=str.substring(i*n,min((i 1)*n, str.length))
}
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/307858.html
標籤:
