Amod申请多次工程入学考试,提交申请后,他收到如下信息:
Application 1: Hi Amod. Your registration number is AX1234 and hallticket number is XC876
Application 2:Hi Amod. Your hallticket is AX1234 and registration number is XC876
Application 3:Hi Amod. Your hallticket and registration are AX1234 and XC876
Application 4:Hi Amod. AX1234 and XC876 are Your hallticket and registration
现在我们需要开发一个java程序,它将从给定的字符串中提取和打印门票和注册号。在字符串中,可以更改注册号和门票号的顺序。我们需要开发一个程序,它会给出门票号码和注册号,而不用担心单词的顺序。
洗脱,直到我尝试:
我试图找到所需词语的索引,即注册,门票和两个aplhanumeric词。
String inputString = "Hi Amod. AX1234 and XC876 are Your hallticket and registration";
String inputStringArray[] = inputString.split("\\s+");
Map<String, Integer> map = new LinkedHashMap<>();
String regex = "^(?=[^\\s]*?[0-9])(?=[^\\s]*?[a-zA-Z])[a-zA-Z0-9]*$";
Pattern pattern = Pattern.compile(regex);
for (int i = 0; i < inputStringArray.length; i++) {
switch (inputStringArray[i].toLowerCase()) {
case "registration":
map.put(inputStringArray[i].toLowerCase(), i);
break;
case "hallticket":
map.put(inputStringArray[i].toLowerCase(), i);
break;
}
if (inputStringArray[i].matches(regex)) {
map.put(inputStringArray[i], i);
}
}
System.out.println(map);
打印bwlow输出:
{AX1234=2, XC876=4, hallticket=7, registration=9}
现在我很困惑,如何将两个字母数字与hallticket和注册联系起来。有人可以帮助我吗??
答案 0 :(得分:0)
简单类型是
feature is string
如果功能可以是hallticket
或registration number
,则使用正则表达式提取此功能非常简单。
更复杂的一个是
feature and feature
结合string and string
。
以[a-zA-Z0-9]+ and [a-zA-Z0-9]+
的形式提取所有子字符串。其中一个匹配的子字符串将给出相对位置,另一个将给出值。
答案 1 :(得分:0)
你已经完成了大部分工作。
尝试查看句子中的顺序。如果“hallticket”这个词出现在“注册”之前,那么很可能是门票代码在句子中比注册码更早。只要确保你的正则表达式适合。
这适用于你的例句,也可能适用于每个看似合理的英语句子......
答案 2 :(得分:0)
String inputString = "Hi Amod. Your registration number is AX1234 and hallticket number is XC876";
Pattern p = Pattern.compile("[A-Z]{2}\\d+");
Matcher m = p.matcher(inputString);
String [] values = new String[2];
int i=0;
Map<String,String> map = new HashMap<>();
while (m.find()) {
values[i++] = m.group();
}
if(inputString.indexOf("registration")<inputString.indexOf("hallticket")){
map.put("registration", values[0]);
map.put("hallticket", values[1]);
}
else{
map.put("registration", values[1]);
map.put("hallticket", values[0]);
}
for(Entry e: map.entrySet()){
System.out.println(e.getKey() +" : "+e.getValue());
}