[英]String format and vararg in kotlin
我有以下方法
fun formatMessages(indicators: IntArray): CharSequence {
return context.getString(R.string.foo, indicators)
}
字符串是:
<string name="foo">$1%d - $2%d range of difference</string>
我收到來自 Android Studio 的投訴:
Wrong argument count, format string requires 2 but format call supplies 1
我真正想要完成的是能夠將任意數量的指標(1,2,3..)
傳遞給這樣的formatMessages
,並且將選擇/顯示正確的字符串。
將您的 function 修改為:
fun formatMessages(indicators: IntArray): CharSequence {
return context.getString(R.string.foo, indicators[0], indicators[1])
}
但當然,您需要適當檢查指標長度是否至少為 2,這樣它就不會崩潰。
原因是getString(int resId, Object... formatArgs)
運行時將失敗,因為它需要字符串資源中定義的 2 個參數。
fun formatMessages(indicators: Array<Object>): CharSequence {
return context.getString(R.string.foo, *indicators)
}
如果您需要indicators
的類型為IntArray
,則必須對其進行轉換:
fun formatMessages(indicators: IntArray): CharSequence {
return context.getString(R.string.foo, *(Array<Object>(indicators.size) { indicators[it] }))
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.