我正在使用以下代碼來格式化用戶在 EditText 中輸入的金額。
fun String.formatWithComma(): String {
return try {
val formatter = DecimalFormat("#,###,###")
formatter.format(toDouble())
} catch (ex: Exception) {
return ""
}
}
但是當我將電話語言切換為荷蘭語時,逗號會轉換為點 (.)。就像用戶想要輸入 4,323 一樣,它會被轉換為 4.323。
即使在荷蘭語中,我也想用逗號而不是點。任何解決方案
uj5u.com熱心網友回復:
一些歐洲國家使用逗號和點的方式與美國和英國不同。在使用它之前,您應該添加一個額外的行來指示它:
formatter.decimalFormatSymbols = DecimalFormatSymbols.getInstance(Locale.ENGLISH)
uj5u.com熱心網友回復:
我不確定這是否能解決您的問題。
println("${"4.323.001".formatWithComma()}")
如果我們在字串中發現多個點,我將替換該值,并根據您的需要改進此解決方案。
fun String.formatWithComma(): String {
return try {
var lastIndexOf = this.lastIndexOf(".");
var temp = this
var temp2 = ""
if(this.split(".").size >= 2)
{
temp = this.substring(0,lastIndexOf).replace(".","");
temp2 = this.substring(lastIndexOf,this.length);
}
val formatter = DecimalFormat("#,###,###.###")
return formatter.format((temp temp2).toDouble())
} catch (ex: Exception) {
return ""
}
}
uj5u.com熱心網友回復:
根據潘愛民的回答
解決此問題的最終解決方案是
fun String.formatWithComma(): String {
return try {
val formatter = DecimalFormat("#,###,###")
formatter.decimalFormatSymbols = DecimalFormatSymbols.getInstance(Locale.ENGLISH)
formatter.format(toDouble())
} catch (ex: Exception) {
return ""
}
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/480446.html
