将字符串解析为整数

时间:2017-04-18 23:24:36

标签: java parsing split

我的构造函数遇到了问题。我传入一个字符串,我想要获得所述字符串的整数值。

字符串看起来像[a2, a3][a4, a6][a10, a22]

我想摆脱a,首先,我已经完成了,但我正在努力将2,3,4,6,10,22等转换为整数。我的猜测是遍历字符串并解析出不是逗号或[,或]的数据,但我正在摸索转换。这就是我到目前为止所做的。

public Converter(String str) {
     String getRidOfAPrefix = str.replaceAll("a", "");
     for (int i = 0; i < getRidOfAPrefix.length(); i++) {
         char charactersOfString = getRidOfAPrefix.charAt(i);
         if (charactersOfString == '[') {
           // A bit lost here

我会很感激任何提示。我几个小时一直在努力。

3 个答案:

答案 0 :(得分:2)

选项1,在][然后,上拆分,然后使用正则表达式替换所有非数字。像,

String str = "[a2, a3][a4, a6][a10, a22]";
for (String x : str.split("\\]\\[")) {
    for (String s : x.split("\\s*,\\s*")) {
        System.out.println(s.replaceAll("\\D", ""));
    }
}

选项2,使用Pattern查找匹配a后跟数字的所有内容。然后使用循环获取所有匹配项,从第二个字符中取出子字符串(跳过a)。像,

Pattern p = Pattern.compile("a\\d+");
Matcher m = p.matcher(str);
while (m.find()) {
    System.out.println(m.group().substring(1));
}

两个选项输出

2
3
4
6
10
22

答案 1 :(得分:0)

这是一种方式,但我称之为黑客攻击。小心你如何使用它。

你可以删除关闭括号和空格,因为它们只是在我们的方式。之后我们有类似“[2,3 [4,6 [10,22”]。如您所见,每个数字现在只有一个分隔符。因此,我们可以对“[”和“,”。

使用split方法
public Converter(String str) {
   String getRidOfAPrefix = str.replaceAll("a| |\\]", "");
   String[] nums = getRidOfAPrefix.split("\\[|,");
   for (String s: nums) {
       // do your thing
   }
}

答案 2 :(得分:0)

尝试这样的事情:

String str = "[a2, a3][a4, a6][a10, a22]";
List<Integer> result = new ArrayList<>();
str = str.replaceAll("\\]\\[", ", ").replaceAll("\\[", "").replaceAll("\\]", "").replaceAll("a", "");
Arrays.asList(str.split(", ")).forEach(num -> result.add(Integer.parseInt(num)));
System.out.println(result); //[2, 3, 4, 6, 10, 22]