如何找到部分行java?

时间:2010-11-03 11:19:33

标签: java regex

我需要显示文件的某些部分。实际上通过使用Matcher和Pattern我在文件中找到了一个单词。使用Matcher.start()和Matcher.end()我得到了单词的位置。但是如何我可以在没有分裂的情况下获得这个词之前和之后的单词。这就像一个家庭作业程序.Plz帮助我。

例如:File.txt:

仅包含上述行。然后我在23和26位置找到“the”字。现在我想要“某些部分”,“要显示的文件”。词语的

实际上,通过使用String.substring(start,end),我们将得到一些部分,但我需要确切的单词。如果我采用子字​​符串,它就是给予,削减部分单词。

2 个答案:

答案 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中使用字符串操作。我没有证明它对所有输入都是正确的,我把它作为练习留给问题的作者。