我有一個字串說,val statement = "Ramu is a genius-boy, who likes tea."
現在,我將其轉換為以空格“”分隔的單詞串列:
val ListOfString = ["Ramu", "is", "a", "genius-boy," "who", "likes", "tea."]
我想知道如何復制“genius-boy”,它包含“-”的次數
因此,最終串列應如下所示:
val listContainingConnectedWordCopies = ["Ramu", "is", "a", "genius-boy,", "genius-boy,", "who", "likes", "tea."]
更好的是這個串列
val listOfDisconnectedWords = ["Ramu", "is", "a", "genius,", "-boy,", "who", "likes", "tea."]
uj5u.com熱心網友回復:
這里的關鍵是使用flatMap, 將串列中的一個元素映射到多個元素。
對于listContainingConnectedWordCopies,您可以先計算有多少個破折號,然后生成一個包含比破折號多一個副本的序列。這是因為當沒有破折號時,您仍然希望單詞出現在結果串列中一次。
fun listContainingConnectedWordCopies(words: List<String>) =
words.flatMap { word ->
val dashCount = word.count { it == '-' }
generateSequence { word }.take(dashCount 1)
}
對于listOfDisconnectedWords,您可以通過一個正則運算式拆分每個單詞,該正則運算式在破折號之前找到索引,方法是使用前瞻。然后在 a 中使用此拆分的結果flatMap:
fun listOfDisconnectedWords(words: List<String>) =
words.flatMap { it.split("(?=-)".toRegex()) }
請注意,這兩種解決方案都會創建新串列,而不是修改現有串列。
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/514410.html
標籤:细绳列表科特林收藏品分裂
