我想找一个非常具体的问题:
所以我尝试的是:
为了完成这个,我找到了一个基本的脚本,它应该"提取"单词,但它仍然是错误的,所以它并没有真正有用。
int indexOfSpace = 0;
int nextIndexOfSpace = 0;
String sentence = "This is a sentence";
int lastIndexOfSpace = sentence.lastIndexOf(" ");
while(indexOfSpace != lastIndexOfSpace) {
nextIndexOfSpace = sentence.indexOf(" ",indexOfSpace);
String word = sentence.substring(indexOfSpace,nextIndexOfSpace);
System.out.println("Word: " + word + " Length: " + word.length());
indexOfSpace = nextIndexOfSpace; }
String lastWord = sentence.substring(lastIndexOfSpace);
System.out.println("Word: " + lastWord + " Length: " + lastWord.length());
我没想过你给我准备好的解决方案,但我可能需要一些提示来编程步骤;)
答案 0 :(得分:0)
如果您确定该字符串将始终遵循相同的表单,则可以实现正则表达式匹配。我们的想法是使用组来捕获您感兴趣的子字符串。
例如,您可以使用.*name is: (\w+)
从字符串中捕获Peter
。同样,您可以将其应用于其他令牌。
答案 1 :(得分:0)
您可以使用与此类似的正则表达式:
name[^:]*:\s*(\w+).*?group[^:]*:\s*(\w+).*?birthday[^:]*:\s*(\d+\.\d+\.\d+)
输入字符串:
我们有一个新成员。他的名字是:彼得。他很不错。他是该组织的成员:devceloper。他的生日也是:2001年8月13日。我们还有一位新成员......
它将捕获以下组:
使用模式的匹配器,您可以迭代所有匹配。
示例代码:
String input = "we got a new member. he's name is: Peter. He is pretty nice. he "
+ "is a member of the group: devceloper. Also he's birthday is: 13.08.2001."
+ " As well we got a new member she's name is: Sara. She is pretty nice. "
+ "she is a member of the group: customer. Also her birthday is: 21.01.1998";
Pattern pattern = Pattern.compile("name[^:]*:\\s*(\\w+).*?group[^:]*:\\s*(\\w+).*?birthday[^:]*:\\s*(\\d+\\.\\d+\\.\\d+)");
Matcher matcher = pattern.matcher(input);
while(matcher.find()) {
System.out.printf("Match found. name: %s, group: %s, birthday: %s %n", matcher.group(1), matcher.group(2), matcher.group(3));
}
输出:
Match found. name: Peter, group: devceloper, birthday: 13.08.2001
Match found. name: Sara, group: customer, birthday: 21.01.1998