【问题标题】:Currency formatting for BlackBerry when locale set to French区域设置为法语时 BlackBerry 的货币格式
【发布时间】:2012-01-27 21:37:07
【问题描述】:

我正在编写一个需要法语支持的应用。当语言环境设置为 FR 时,我无法正确格式化货币。有什么方法可以正确地做到这一点吗?

【问题讨论】:

    标签: blackberry blackberry-jde


    【解决方案1】:

    我必须自己做。 使用以下方法创建了一个扩展 AFormatter 的“Formatter”类 现在不要在法国如何,但在阿根廷,我们使用以下格式 10.000.000,18 例如。 希望对您有所帮助或有人提供更好的解决方案

        public static String addCommas(String s) {
        int extraRound = 0;
        boolean negative = false;
        int c;
        if(s.charAt(0) == '-') {
            negative = true;
            s = s.substring(1);
        }
        int len = s.indexOf('.')==-1?s.length():s.indexOf('.');
        if(len > extraRound + 3) {
            c = len - extraRound  - 3;
            s = s.substring(0, c) + "," + s.substring(c);
        }
    
        if(len > extraRound + 6) {
            c = len - extraRound  - 6;
            s = s.substring(0, c) + "," + s.substring(c);
        }
    
        if(len > extraRound + 9) {
            c = len - extraRound  - 9;
            s = s.substring(0, c) + "," + s.substring(c);
        }
    
        if(len > extraRound + 12) {
            c = len - extraRound  - 12;
            s = s.substring(0, c) + "," + s.substring(c);
        }
    
        if(negative) {
            s = '-' + s;
        }
        return s;
    }
    
    public static String addCommasNew(String s) {
        int extraRound = 0;
        boolean negative = false;
        int c;
        if(s.charAt(0) == '-') {
            negative = true;
            s = s.substring(1);
        }
        int len = s.indexOf(',')==-1?s.length():s.indexOf(',');
        if(len > extraRound + 3) {
            c = len - extraRound  - 3;
            s = s.substring(0, c) + "." + s.substring(c);
        }
    
        if(len > extraRound + 6) {
            c = len - extraRound  - 6;
            s = s.substring(0, c) + "." + s.substring(c);
        }
    
        if(len > extraRound + 9) {
            c = len - extraRound  - 9;
            s = s.substring(0, c) + "." + s.substring(c);
        }
    
        if(len > extraRound + 12) {
            c = len - extraRound  - 12;
            s = s.substring(0, c) + "." + s.substring(c);
        }
    
        if(negative) {
            s = '-' + s;
        }
        return s;
    }
    
    public static String removeScientific(String s) {
        int eIndex = s.indexOf('E');
        int initialPos = s.indexOf('.');
        String result = s;
    
        if (eIndex != -1){
            int base = Integer.parseInt(s.substring(eIndex+1));
            String pre = s.substring(0, initialPos);
            String pos = s.substring(initialPos+1, eIndex);
            String pos1 = ""; 
            if (base < pos.length()){
                String pos1a = pos.substring(0, base);
                String pos1b = pos.substring(base, pos.length());
                pos1 = pos1a + "." + pos1b; 
            } else {
                pos1 = pos.substring(0, pos.length());
                for (int i = 0; i < base-pos.length(); i++){
                    pos1 = pos1 + "0";
                }
            } 
            result = pre + pos1;
        } 
    
        return result;
    }
    
    public static String changePointToComma(String s){
        int initialPos = s.indexOf('.');
        String result = s;
        if (initialPos != -1){
            result = s.substring(0, initialPos) + "," + s.substring(initialPos + 1, s.length());
        }
    
        return result;
    }
    
    public static String changeCommaToPoint(String s){
        int initialPos = s.indexOf(',');
        String result = s;
        if (initialPos != -1){
            result = s.substring(0, initialPos) + "." + s.substring(initialPos + 1, s.length());
        }
    
        return result;
    }
    
    public static String removeNumberFormat(String s){
        int initialPos = s.indexOf('.');
        String result = s;
        if (initialPos != -1){
            result = s.substring(0, initialPos) + s.substring(initialPos + 1, s.length());
            result = Formatter.removeNumberFormat(result);
        } else {
            return result = Formatter.changeCommaToPoint(s);
        }
    
        return result;
    }
    
    public static String roundDouble(String s, int presicion){
        int initialPos = s.indexOf('.');
        String result = s;
        String pre;
        String pos;
    
        if (initialPos != -1){
            pre = s.substring(0, initialPos);
            pos = s.substring(initialPos + 1, s.length());
            if (presicion < pos.length()){
                pos = s.substring(initialPos + 1, initialPos + 1 + presicion );
                int dec = Integer.parseInt(pos);
                int next = Integer.parseInt(s.substring(initialPos + 1 + presicion, initialPos + 2 + presicion )); //to round the las digit
                if (next > 4){
                    dec = dec + 1;
                    pos = dec + "";
                    if ((dec+"").length() > presicion){
                        pre = (Integer.parseInt(pre) + 1) + "";
                        pos = "0";
                    }
                }
            } else {
            }
    
            result = pre + "." + pos; 
        }
    
        return result;
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-01-20
      • 2020-01-24
      • 2016-03-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-07-11
      相关资源
      最近更新 更多