在Android中格式化字符串变量

时间:2014-01-23 08:58:28

标签: java android

我的android应用程序中需要一个函数的帮助。该函数获得如下的双精度:0.1234567或123.1234567;我想将其转换为字符串,之后,如果double大于1,则必须返回123.1(如果double为123.123456),如果double小于0,则必须返回123(如果double为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

3 个答案:

答案 0 :(得分:3)

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

这样做

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

请参阅here如何将double值拆分为Integer part和Fractional part。

答案 1 :(得分:0)

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;
        }

答案 2 :(得分:0)

String.split()使用正则表达式,其中点.是特殊字符。因此,您需要转义Dot,因此您可以按字符点分割,不要将点用作正则表达式中的特殊(函数)字符。

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