假设我有一个字符串=“你好”。如何打开文本文件并检查该文本文件中是否存在hello?
文本文件的内容:
hello:man:yeah
我尝试使用下面的代码。文件阅读器只读取第一行吗?我需要它来检查所有行以查看hello是否存在,然后如果确实存在,则从中取出“man”。
try {
BufferedReader in = new BufferedReader(new FileReader("hello.txt"));
String str;
while ((str = in.readLine()) != null) {
System.out.println(str);
}
} catch (IOException e) {
System.out.println("Error.");
}
答案 0 :(得分:4)
如果你好:man:是的,你的文件中有一行,那么你的代码工作正常。 readLine()将读取一行直到找到换行符(在这种情况下为一行)。
如果您只想查看它是否在文件中,那么您可以执行以下操作:
String str;
boolean found = false;
while ((str = in.readLine()) != null) {
if(str != null && !found){
found = str.contains("hello") ? true : false;
}
}
如果您需要进行全字搜索,则需要使用正则表达式。用\ b围绕搜索文本将执行整个单词搜索。这是一个片段(注意,StringUtils来自Apache Commons Lang):
List<String> tokens = new ArrayList<String>();
tokens.add("hello");
String patternString = "\\b(" + StringUtils.join(tokens, "|") + ")\\b";
Pattern pattern = Pattern.compile(patternString);
Matcher matcher = pattern.matcher(text);
while (matcher.find()) {
System.out.println(matcher.group(1));
}
当然,如果你没有多个令牌,你可以这样做:
String patternString = "\\bhello\\b";
答案 1 :(得分:1)
在每一行上使用String.contains
方法。每行都在while循环中处理。
答案 2 :(得分:1)
使用String.indexOf()
或String.contains()
方法。