![](/img/trans.png)
[英]Xamarin form: How to find out the android device's size bucket e.g small, medium etc
[英]Get Currency symbol of only one character (e.g $,₹, etc) (Locale doesn't matter) android kotlin
我有货币代码(例如 USD、INR 等...)。 我只想获得这些代码中一个字母的符号(例如 $、₹ 等)。 我试图找到许多这样的解决方案,但它对我不起作用。 我正在使用如下代码
var pound = Currency.getInstance("GBP");
var symbol = pound.getSymbol();
但它会返回类似(Rs.、US$、AU$ 等)的符号。 如上所述,我只想获得一个字符符号。 我知道符号取决于它们的语言环境,但我想获得独立于它们的语言环境的符号。
尝试在 getSymbol() 中调用默认Locale
,例如getSymbol(Locale.getDefault(Locale.Category.DISPLAY))
检查下面的代码
Currency pound = Currency.getInstance("GBP");
pound.getSymbol(Locale.getDefault(Locale.Category.DISPLAY));
在Kotlin快速回答你的问题:
var pound = Currency.getInstance("GBP");
val symbol = pound.symbol
println(symbol) // prints £
如果有用,我粘贴我的解决方案以获取货币代码(即:EUR)和货币符号(即 €)和:
val locale = Locale.getDefault()
val numberFormat = NumberFormat.getCurrencyInstance(locale)
println(numberFormat.currency) // on my device in Italy prints: EUR
val symbol = numberFormat.currency?.symbol
println(symbol) // on my device in Italy prints: €
这对我来说很好用
import android.os.Build
import android.support.v7.app.AppCompatActivity
import android.os.Bundle
import kotlinx.android.synthetic.main.activity_main.*
import java.util.*
class MainActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
count()
}
fun count () {
val pound = Currency.getInstance("USD")
var str:String
str = if(Build.VERSION.SDK_INT >=24) pound.getSymbol(Locale.getDefault(Locale.Category.DISPLAY))
else pound.getSymbol(resources.configuration.locale)
tvText.text = str
}
}
我只是创建了这个 kotlin 扩展函数,如果有货币符号,它会隔离货币符号,如果没有,则使用提供的符号。
// Supply the Currency Symbol, e.g. US$, would return $ and IDR would return IDR
fun String.isolateCurrencySymbol(): String{
for (char in this){
if (char !in CharRange('A', 'Z')){
return char.toString()
}
}
return this
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.