gpt4 book ai didi

Java解析包含整数和多个分隔符的字符串

转载 作者:行者123 更新时间:2023-12-01 16:49:00 25 4
gpt4 key购买 nike

这是一个示例字符串,其中包含 2 个分隔符,用于将字符串解析为整数:

"1,25,3-6,14,16-19"

必须解析上述字符串中的整数并将其添加到包含整数的 ArrayList 中。因此 ArrayList 必须包含:

1,3,4,5,6,14,16,17,18,19,25

原始字符串中的值从未被提及两次。因此,不存在交叉部分。下面你可以看到我到目前为止编写的不完整的代码,但我认为我正朝着完全错误的方向前进,应该有一种更简单的方法来解决解析。

List<Integer> temp = new ArrayList<>();
Scanner s = new Scanner(System.in);
String str = s.nextLine();
char[] strCh = str.toCharArray();
for (int j = 0; j < strCh.length; j++) {
char c = strCh[j];
String number = "";
char operator = 'n';
if (Character.isDigit(c)) {
do {
number += c;
j++;
if (j != strCh.length - 1)
c = strCh[j];
} while (j < strCh.length && Character.isDigit(c));
} else if (c == ',') {
operator = ',';
temp.add(Integer.parseInt(number));
number = "";
} else if (c == '-') {
//still not sure
}
}

最佳答案

您可以使用String#split()两次来处理输入字符串。首先用逗号分隔,这给我们留下了一个单独的数字,或者一个单独的数字范围。然后,如果是范围,则再次用破折号分割以获得该范围的起始数字和结束数字。我们可以迭代该范围,将每个数字添加到我们的列表中。

String input = "1,25,3-6,14,16-19";
String[] parts = input.split(",");
List<Integer> list = new ArrayList<>();

for (String part : parts) {
if (part.contains("-")) {
String[] range = part.split("-");
int start = Integer.parseInt(range[0]);
int end = Integer.parseInt(range[1]);

for (int i=start; i <= end; ++i) {
list.add(i);
}
}
else {
int value = Integer.parseInt(part);
list.add(value);
}
}

这生成了以下数字列表:

1,25,3,4,5,6,14,16,17,18,19

此处演示:

Rextester

关于Java解析包含整数和多个分隔符的字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44360373/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com