Java "100%" 到数字
Java "100%" to number
Java 中是否有将百分比转换为数字的内置例程,例如,如果字符串包含 100% 或 100px 或 100,我想要一个包含 100 的浮点数。
使用Float.parseInt 或Float.valueOf 会导致异常。我可以编写一个例程来解析字符串和 return 数字,但我想问这是否已经存在?
用StringBuffer去掉%
符号,然后就可以转换了
if (percent.endsWith("%")) {
String number = new StringBuffer(percent).deleteCharAt(percent.length() - 1);
float f = Float.valueOf(number);
} else [Exception handling]
上面的方法更好,但我想我会修正我对评论的回答。在删除字符之前,您必须确保处理的是百分比。
我认为你可以使用:
NumberFormat defaultFormat = NumberFormat.getPercentInstance()
Number value = defaultFormat.parse("100%");
感谢您的帖子和建议,我确实尝试使用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;
}
您对 的评论表明您需要支持以“%”、"px" 结尾的字符串,或者根本不支持。如果字符串的唯一内容是数字和单位,那么你应该能够逃脱:
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。
Java 中是否有将百分比转换为数字的内置例程,例如,如果字符串包含 100% 或 100px 或 100,我想要一个包含 100 的浮点数。
使用Float.parseInt 或Float.valueOf 会导致异常。我可以编写一个例程来解析字符串和 return 数字,但我想问这是否已经存在?
用StringBuffer去掉%
符号,然后就可以转换了
if (percent.endsWith("%")) {
String number = new StringBuffer(percent).deleteCharAt(percent.length() - 1);
float f = Float.valueOf(number);
} else [Exception handling]
上面的方法更好,但我想我会修正我对评论的回答。在删除字符之前,您必须确保处理的是百分比。
我认为你可以使用:
NumberFormat defaultFormat = NumberFormat.getPercentInstance()
Number value = defaultFormat.parse("100%");
感谢您的帖子和建议,我确实尝试使用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;
}
您对
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。