【问题标题】:Format a String Variable in Android在 Android 中格式化字符串变量
【发布时间】:2014-02-13 17:25:39
【问题描述】:

我需要有关我的 android 应用程序中的某个功能的帮助。该函数获得这样的双精度:0.1234567 或 123.1234567;我想将其转换为字符串,稍后,如果双精度大于 1,则必须返回 123.1(如果双精度为 123.123456),如果双精度小于 0,则必须返回 123(如果双精度为 0.123456)。目前,我设法将双精度转换为字符串,但我不知道该怎么做。

这是我的方法:

public String getFormatDistance(double distance) {
        String doubleAsText = String.valueOf(distance);
        if (distance > 0.9) {
            return doubleAsText;
        } else {
            String[] parts = doubleAsText.split(".");
            String part1 = parts[0];
            String part2 = parts[1];
            //part2 = part2.split("");
            return part2;
        }
    }

这行显示字符串:

    TextView fourText = (TextView) row.findViewById(R.id.distance);
    fourText.setText(getFormatDistance(values.get(position).distance));

它返回下一个错误:

01-23 09:45:48.816: E/AndroidRuntime(8677): java.lang.ArrayIndexOutOfBoundsException: length=0; index=1

【问题讨论】:

    标签: java android


    【解决方案1】:

    使用Pattern.quote()按点符号分割字符串。

    这样做

    String[] parts = doubleAsText.split(Pattern.quote("."));
    

    请参阅here 如何将双精度值拆分为整数部分和小数部分。

    【讨论】:

    • 您好,感谢您的回答。现在,它运行良好:) 现在,我只需要显示变量“part2”的前三位,我该怎么做?
    • @Yeray 不客气。像这样使用 String.substring() part2 = part2.substring(0,3);
    【解决方案2】:
    if (CharMatcher.is('.').countIn("doubleAsText") > 1) {
                return doubleAsText;
            } else {
                String[] parts = doubleAsText.split(".");
                String part1 = parts[0];
                String part2 = parts[1];
                //part2 = part2.split("");
                return part2;
            }
    

    【讨论】:

      【解决方案3】:

      String.split() 使用正则表达式,其中点 . 是一个特殊字符。所以需要对Dot进行转义,这样就可以通过字符点来分割,不要把点作为正则表达式中的特殊(功能)字符。

      String[] parts = s.split("\\.");
      String part1 = parts[0];
      String part2 = parts[1];
      

      【讨论】:

      • 嗨,感谢您的回答,但我想先将双精度部分和小数部分分开,现在它对 Prabhakaran 来说效果很好。但是,我只需要显示字符串参数的前三位。感谢您的帮助。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多