Получить символ валюты только из одного символа (например, $, ₹ и т. д.) (локаль не имеет значения) android kotlin

у меня есть код валюты (например, USD, INR и т. д.). Я хочу получить символы только одной буквы этих кодов (например, $, ₹ и т. д.). я пытался найти много решений, таких как это, но это не так не работает для меня. я использую код, как показано ниже

var pound = Currency.getInstance("GBP");
var symbol = pound.getSymbol();

но он возвращает такие символы, как (рупии, доллары США, австралийские доллары и т. д.). я хочу получить только один символ символа, как указано выше. я знаю, что символы зависят от их локали, но я хочу, чтобы символы не зависели от их локали.


person Jaydip Kalkani    schedule 23.12.2017    source источник


Ответы (3)


попробуйте вызвать по умолчанию Locale в getSymbol(), например getSymbol(Locale.getDefault(Locale.Category.DISPLAY)), проверьте код ниже

Currency pound = Currency.getInstance("GBP");
pound.getSymbol(Locale.getDefault(Locale.Category.DISPLAY));
person OmiK    schedule 23.12.2017
comment
Этот параметр требует Api N, поэтому он работает только на naugat или выше. если у вас есть другое решение, пожалуйста, предложите мне. - person Jaydip Kalkani; 23.12.2017

Это отлично работает для меня

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
    }


}
person Vsevolod    schedule 23.12.2017
comment
Нет, это не работает. он возвращает такие символы, как US$, CA$, Rs. и т.д... я хочу получить $,₹ и т.д.. - person Jaydip Kalkani; 23.12.2017
comment
Ну, я не понимаю, почему. Код выше возвращает $. - person Vsevolod; 23.12.2017
comment
я думаю, это из-за того, что ваш язык по умолчанию установлен в соответствии с настройками страны по умолчанию вашего мобильного телефона. вы можете проверить это, установив разные страны, такие как Индия, Япония и т. д. - person Jaydip Kalkani; 23.12.2017

Я просто создал эту функцию расширения 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
}
person Elias    schedule 24.05.2020