我有关于按年龄划分优先次序的问题
这些是需要处理的输入
Dude 20-25 Major Injuries
Guy 48 Panic
Bob <=4
我必须优先考虑受害者年龄(年轻人到年长者)必须得救的人 你可以看到受害者姓名后面的数字是年龄
所以如果它是20-25的范围,它将被视为20
我的问题是,处理每一行的最佳方法是什么,这样我才能从年龄中获得所考虑的价值 我需要将它存储在像数组或arrayList中的某个地方 如果它是:
Dude 20-25 Major Injuries
它将改为Dude 20 Major Injuries
我只需要处理它的想法,不需要是代码。
答案 0 :(得分:0)
您可以使用正则表达式并按规则替换这些术语。以下是第一条规则的一个小例子:
String input = "Dude 20-25 Major Injuries";
Pattern pattern = Pattern.compile("([^\\d]*)([\\d]+)-([\\d]+)(.*)");
Matcher matcher = pattern.matcher(input);
matcher.matches();
String output = matcher.group(1) + matcher.group(2) + matcher.group(4);
System.out.println(input);
System.out.println(output);
输出:
Dude 20-25 Major Injuries
Dude 20 Major Injuries
答案 1 :(得分:-1)
要解析年龄,请使用String.contains
逻辑:
String input = "Bob 20-25";
Pattern pattern =
Pattern.compile("[[(<=?)(>=?)]?[0-9]{1, 2}([0-9]{1,2} - [0-9]{1, 2})]");
Matcher matcher =
pattern.matcher(input);
String regex = matcher.group();
int age = Integer.parseInt(regex);
if (regex.contains("=") {};
else if (regex.contains("<") {
age = age - 1;
else if (regex.contains(">") {
age = age + 1;
}
else {}
要在解析年龄后存储数据,您可以使用PriorityQueue
。
PriorityQueue
类提供了一个构造函数,您可以在其中指定自己的Comparator来对Queue中的元素进行排序。这是存储元素的最有效方法,可以快速检索和索引。
请参阅JavaDocs