Java“100%”来编号

时间:2016-01-19 14:33:53

标签: java string-conversion

Java中是否有内置例程将百分比转换为数字,例如,如果字符串包含100%或100px或100,我想要一个包含100的浮点数。

使用Float.parseInt或Float.valueOf会导致异常。我可以编写一个解析字符串并返回数字的例程,但我问这已经存在了吗?

4 个答案:

答案 0 :(得分:18)

我认为你可以使用:

NumberFormat defaultFormat = NumberFormat.getPercentInstance()
Number value = defaultFormat.parse("100%");

答案 1 :(得分:1)

使用StringBuffer删除%符号,然后您可以将其转换。

if (percent.endsWith("%")) {
    String number = new StringBuffer(percent).deleteCharAt(percent.length() - 1);
    float f = Float.valueOf(number);
} else [Exception handling]

上面的方法更好,但我想我会解决有关评论的答案。在删除角色之前,您必须确保处理百分比。

答案 2 :(得分:0)

感谢您的帖子和建议,我确实尝试使用eg04lt3r发布的解决方案,但结果已翻译。最后我写了一个简单的函数,完全符合我的要求。我相信一个好的正则表达式也会起作用。

    public static double string2double(String strValue) {
        double dblValue = 0;
        if ( strValue != null ) {
            String strResult = "";
            for( int c=0; c<strValue.length(); c++ ) {
                char chr = strValue.charAt(c);

                if ( !(chr >= '0' && chr <= '9'
                   || (c == 0 && (chr == '-' || chr == '+'))
                   || (c > 0 && chr == '.')) ) {
                    break;
                }
                strResult += chr;
            }
            dblValue = Double.parseDouble(strResult);
        }
        return dblValue;
    }

答案 3 :(得分:0)

您对this answer的评论表示您需要支持以&#34;%&#34;,&#34; px&#34;结尾的字符串,或者根本不支持。如果字符串的唯一内容是数字和单位,那么你应该能够逃脱:

float floatValue = new DecimalFormat("0.0").parse(stringInput).floatValue();

如果您的号码被字符串中的其他乱码包围,并且您只希望发生第一个号码,那么您可以使用ParsePosition

String stringInput = "Some jibberish 100px more jibberish.";

int i = 0;
while (!Character.isDigit(stringInput.charAt(i))) i++;

float floatValue = new DecimalFormat("0.0").parse(stringInput, new ParsePosition(i)).floatValue();

这两种解决方案都可以为您提供浮点值,而无需将结果乘以100。