2010-11-03 143 views
0

我需要的文件,以display.Actually的某些部分通过使用匹配器和模式,我发现文件中的一个字。通过使用Matcher.start()和Matcher.end()我得到了word.But的现在的位置怎么能我在没有分裂的情况下得到这个词前后的单词。这就像一个家庭工作程序.Plz帮助我。如何找到java行的一部分?

例如:FILE.TXT:

包含上述线only.then中,我发现“之”字在23和26 postion.Now我想要的,“文件以显示“的一些部分”。 “话。

实际上,通过使用String.substring(开始,结束),我们会得到一些部分,但我需要准确words.If我把串它给,切割的话一部分。

+0

什么是“某些部分 – 2010-11-03 11:24:23

+0

什么是‘一些药水’到底是什么? Next/Former 3 words? – 2010-11-03 11:25:06

+0

不完全,前后发现字 – ADIT 2010-11-03 11:26:50

回答

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

0

关键是要记住,String.range方法是在Java中真的很便宜。所以你要做的是获得“匹配模式之前的字符串”和“匹配模式之后的字符串”的子字符串,并应用合适的其他正则表达式从中提取你想要的答案。

+0

经过一番话荫没有得到你。我strucked这个地方only.How使用正则表达式查找 – ADIT 2010-11-03 11:31:02

+0

你也可以设置'Matcher'的区域,重置'Pattern',并从那里继续,但这对我来说似乎更难。 – 2010-11-03 11:32:42

+1

好了,正则表达式匹配三个字可能是'\ S + \ S + \ S + \ S + \ S +'那是关于尽可能多的帮助,因为我想给一个家庭作业的问题;你已经有了一个策略,现在想通了,做出代码。 – 2010-11-03 11:34:24

相关问题