我有一個字串段落,它總是有 6 行,如下例所示。
val result= """
${getValue(A1)} ${getValue(A2)} ${getValue(A3)} ${getValue(A4)} ${getValue(A5)}
${getValue(B1)} ${getValue(B2)} ${getValue(B3)} ${getValue(B4)} ${getValue(B5)}
${getValue(C1)} ${getValue(C2)} ${getValue(C3)} ${getValue(C4)} ${getValue(C5)}
${getValue(D1)} ${getValue(D2)} ${getValue(D3)} ${getValue(D4)} ${getValue(D5)}
${getValue(E1)} ${getValue(E2)} ${getValue(E3)} ${getValue(E4)} ${getValue(E5)}
${getValue(F1)} ${getValue(F2)} ${getValue(F3)} ${getValue(F4)} ${getValue(F5)}
""".trimIndent()
getValue 只回傳一個字符,所以輸出總是這樣的:
A A A A A
B B B B B
C C C C C
D D D D D
E E E E E
D D D D D
我想要的是一種通過行索引從過去示例中洗掉特定行的方法。
例如,我想要一個讓我這樣做的擴展函式,result.deleteLinesAt(3,5)它會像這樣輸出:
A A A A A
B B B B B
C C C C C
E E E E E
如果這無法實作,我能否找到一種方法從字串段落中洗掉最后 N 行
例如我想輸入result.dropLastLines(2),它會像這樣輸出:
A A A A A
B B B B B
C C C C C
D D D D D
uj5u.com熱心網友回復:
val text = """
A A A A A
B B B B B
C C C C C
D D D D D
E E E E E
F F F F F
""".trimIndent()
fun String.deleteLinesAt(vararg lineNumbers: Int): String {
return this
.trim()
.split("\n")
.filterIndexed { index, _ -> index 1 !in lineNumbers }
.joinToString("\n")
}
val result = text.deleteLinesAt(3, 5)
并洗掉最后一行:
val text = """
A A A A A
B B B B B
C C C C C
D D D D D
E E E E E
F F F F F
""".trimIndent()
fun String.dropLastLines(countOfLines: Int): String {
return this
.trim()
.split("\n")
.dropLast(countOfLines)
.joinToString("\n")
}
val result = text.dropLastLines(2)
轉載請註明出處,本文鏈接:https://www.uj5u.com/qianduan/425114.html
