将一串数字从已解析字符串的一部分更改为int

时间:2014-02-07 23:21:41

标签: java string parsing

所以,如果给我一个字符串“Cylinder / soda200 / 0.0054 / 5/10”并且要解析它,我怎么才能真正拿出只有数字的部分并将它们变成int或double?

目前我正在解析它:

    String delims="[/]+";
    String[] drinkParse=lineToParse.split(delims);

4 个答案:

答案 0 :(得分:2)

您可以使用new Integer("22")并将其保存到int以进行转换。 Double也是如此。还有其他方法,我建议简单的谷歌搜索。

答案 1 :(得分:2)

使用Integer.parseInt()Double.parseDouble()等,将字符串作为参数传递。

e.g。 int i = Integer.parseInt(drinkParse[3]);

请注意,如果无法按要求解析参数,则可以抛出NumberFormatException。 (例如“soda200”无法直接解析为int)

答案 2 :(得分:0)

您应该使用拆分功能并像这样解析

Object[] values = (Object[]) var.split("/");
values[2]=Double.parseDouble(values[2]);
values[3]=Integer.parseInt(values[3]);
values[4]=Integer.parseInt(values[4]);
System.out.println(values);

你也可以迭代数组并检查字符串是否对re或p为double或int进行验证,然后在你不知道位置的情况下进行相应的转换。

答案 3 :(得分:0)

我不确定您是否熟悉java中的StringBuilder,但您可以了解有关它的更多信息here,您还可以查看String API {{ 3}}。在下面的程序示例中,我从您发布的字符串中逐个字符地读取,直到程序运行到'/'或者除非它是字符串的结尾。所有字符都保存到StringBuilder并转换为String后检查它是否为数字,可以是double还是整数。如果字符串中的任何字符不是数字或句点 isNumber 标志值设置为false,我们不打印它。如果是一段时间,我们将 isDouble 标志值设置为true,因为我们需要该信息以进行进一步转换。最后,如果所有条件都为真,我们会打印这些数字并创建新的StringBuilder,以便开始构建全新的String

public class myProject {

    public static void main(String[] args) {

        String str = "Cylinder/soda200/0.0054/5/10";
        StringBuilder sb = new StringBuilder();
        boolean isDouble;
        boolean isNumber;

        System.out.println("List of numbers:");
        for (int i = 0; i < str.length(); i++) {

            if (str.charAt(i) != '/') {
                sb.append(str.charAt(i));
            }

            if (str.charAt(i) == '/' || i+1 == str.length()) {

                String strConvert = sb.toString();
                isDouble = false;
                isNumber = true;

                for (int j = 0; j < strConvert.length(); j++) {
                    if (!Character.isDigit(strConvert.charAt(j))) {
                        if (strConvert.charAt(j) == '.') {
                            isDouble = true;
                        } else {
                            isNumber = false;
                        }                        
                    }
                }

                if (isDouble && isNumber) {
                    System.out.println(Double.parseDouble(strConvert));
                } else if (isNumber) {
                    System.out.println(Integer.parseInt(strConvert));
                }

                sb = new StringBuilder();

            }
        }
    }
}

希望这可以帮助您或其他有类似问题的人!