我想在一行中找到一个给定的sting。为此我编写了代码。我使用Pattern类来查找给定字符串是否在行中是否可用。它是给出行,这些不是给了string.I想要那些有给定字符串的行。请检查我的代码。
代码:
public class StringMatch {
public static void main(String args[]) throws FileNotFoundException, IOException{
String text="dsfhgs the dgfre fh" +
"hjfgeh fhg hghjr" +
"fhvhjf the vgh fhjghf" +
"fbvhjfd fhvfg fjvhf" +
"the hfdvhjf vhf fhdvjfd" +
"hfvbhd thehjdvhj hdfvhdf";
String pattern = ".*?\\the\\b.*?";
String f="C:\\TextFiles\\sample.txt";
String line;
BufferedReader br = new BufferedReader(new FileReader(f));
while(br.readLine()!=null) {
line=br.readLine();
Pattern r = Pattern.compile(pattern);
Matcher m = r.matcher(line);
if (m.find( )) {
System.out.println("Found value: " + m.group(0) );
System.out.println("Found value: " + m.group(1) );
System.out.println("Found value: " + m.group(2) );
} else {
System.out.println("NO MATCH");
}
}
}
}
答案 0 :(得分:0)
您可以按照以下方式尝试:
String test="demo string";
System.out.println(test.indexOf("demo"));
输出
0
注意:indexOf()
如果找到字符串,将返回第一个字符的位置,否则返回-1
。或者,您也可以使用Regular Expressions
来搜索复杂的字符串。
Using Regular Expressions :
Pattern p = Pattern.compile("[0-9]");
Matcher m = p.matcher("23asd56");
while(m.find()){
System.out.println(m.group());
}
输出
2
3
5
6
答案 1 :(得分:0)
您必须使用Pattern
和Matcher
这样的类:
Pattern p = Pattern.compile(myRegex);
Matcher m = p.matcher(myString);
while(m.find()){
//print m.group();
}
答案 2 :(得分:0)
或者您应该使用String Contains
String test="demo string";
System.out.println(test.contains("demo"));
然后返回true或false
如果您不关心案件,则必须这样做
System.out.println(test.toLowerCase().contains(new String("demo").toLowerCase()));
包含区分大小写
虽然只是一个简单的比较检查,但它不会做任何花哨的正则表达式
修改
String str = new String("demo");
if (test.toLowerCase().contains(str.toLowerCase())) {
System.out.println(str);
}
答案 3 :(得分:0)
这里的问题是(与大多数其他语言不同)java中,matches()
必须匹配整个字符串为true,因此将".*"
添加到图案。
因为你的输入中有换行符,你还需要添加(?s)
来打开DOTALL标志,这会使点也匹配换行符:
boolean b = Pattern.matches("(?s).*\\b"+searchStr+"\\b.*", line);
答案 4 :(得分:0)
只需使用以下简单的模式!!!!!:
String pattern = ".*?\\the\\b.*?";
// Create a Pattern object
Pattern r = Pattern.compile(pattern);
// Now create matcher object.
Matcher m = r.matcher(line);
if (m.find( )) {
System.out.println("Found value: " + m.group(0) );
System.out.println("Found value: " + m.group(1) );
System.out.println("Found value: " + m.group(2) );
} else {
System.out.println("NO MATCH");
}
我希望这会对你有所帮助
答案 5 :(得分:0)
我的回答是否适合您?
public static void main (String [] args){
String given = "dsfhgs the dgfre fh \n" +
"hjfgeh fhg hghjr \n" +
"fhvhjf the vgh fhjghf \n" +
"fbvhjfd fhvfg fjvhf \n" +
"the hfdvhjf vhf fhdvjfd \n" +
"hfvbhd thehjdvhj hdfvhdf." ;
String[] lines = given.split("\n");
String searchStr = "the";
for(String line : lines)
{
String[] wordOfLine = line.split(" ");
boolean match = false;
for(String word : wordOfLine)
{
if (searchStr.equals(word))
{
match = true;
}
}
if(match)
{
System.out.println("Found value: " + searchStr);
}
else
{
System.out.println("NO MATCH");
}
}
}