我的构造函数遇到了问题。我传入一个字符串,我想要获得所述字符串的整数值。
字符串看起来像[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
我会很感激任何提示。我几个小时一直在努力。
答案 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]