我需要显示文件的某些部分。实际上通过使用Matcher和Pattern我在文件中找到了一个单词。使用Matcher.start()和Matcher.end()我得到了单词的位置。但是如何我可以在没有分裂的情况下获得这个词之前和之后的单词。这就像一个家庭作业程序.Plz帮助我。
例如:File.txt:
仅包含上述行。然后我在23和26位置找到“the”字。现在我想要“某些部分”,“要显示的文件”。词语的
实际上,通过使用String.substring(start,end),我们将得到一些部分,但我需要确切的单词。如果我采用子字符串,它就是给予,削减部分单词。
答案 0 :(得分:0)
诀窍是要记住String.range
方法在Java中真的很便宜。所以你要做的是获得“匹配模式之前的字符串”和匹配模式之后的“字符串”的子串,并应用合适的其他正则表达式从中提取所需的答案。
答案 1 :(得分:0)
String toFind = "day";
String sentence = "wolfrevokcatS no snoitseuq krowemoh tsop ot yad enif a si tI";
char[] charArray = sentence.toCharArray();
String reversedSentence = "";
for(int i = 0; i < charArray.length; ++i) {
reversedSentence += charArray[charArray.length - i - 1];
}
System.out.println(reversedSentence);
boolean matches = reversedSentence.matches(".+" + toFind + ".+");
if(matches) {
int start = reversedSentence.indexOf(toFind);
int end = start + toFind.length();
System.out.println("Before word to find: " + reversedSentence.substring(0, start));
System.out.println("Word to find: " + reversedSentence.substring(start, end));
System.out.println("After word to find: " + reversedSentence.substring(end, reversedSentence.length()));
}
这是一个使用正则表达式的解决方案。如果您设法理解这些代码,那么您将在Java中使用字符串操作。我没有证明它对所有输入都是正确的,我把它作为练习留给问题的作者。