2012-01-11 6 views
-3

私は文字列= "hello"を持っているとします。テキストファイルを開いて、そのテキストファイルにこんにちはが存在するかどうかを確認するにはどうすればよいですか?テキストファイルの区切り文字で文字列を検索するファイル

内容:

hello:man:yeah 

私は以下のコードを使用してみました。ファイルリーダーは最初の行だけを読み込みますか?こんにちはが存在するかどうかを確認するためにはすべての行をチェックし、そうであればそれから "人"を取る必要があります。

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."); 
} 
+1

'文字列myarrayの[] = str.split( ":"); 'java [String](http://docs.oracle.com/javase/6/docs/api/java/lang/String.html)クラスには多くのメソッドがあります。これらのタイプのもの。 –

+2

あなたのファイルには1行しか含まれていません...その行を読み込んでいる間にreadlineを読み込み、2回目のin.readlineがnullを返すのでループを終了します。 – Hons

+0

'BufferedReader'の使用が正しいように見えます。 「hello.txt」の行単位の出力が表示されませんか? – dasblinkenlight

答えて

4

ファイル内でhello:man:yeahが1行の場合、コードが正しく機能しています。 readLine()は、改行が見つかるまで(この場合は1行)、行を読み込みます。

あなたはちょうどそれがファイルにありますかどうかを確認したい場合は、あなたがこのような何か行うことができます:あなたは全体のワード検索を行う必要がある場合

String str; 
boolean found = false; 
while ((str = in.readLine()) != null) { 
     if(str != null && !found){ 
     found = str.contains("hello") ? true : false; 
     } 
    } 

を、あなたは正規表現を使用する必要があります。 \ bで検索テキストを囲むと、単語検索全体が行われます。ここでスニペットが(注、のStringUtilsは、Apache Commonsのラングから来ている)だ:もちろん

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"; 
+0

こんにちは。 String.containsを使用して、入力が「地獄」であってもtrueを返します。私はそれが正確であることが必要です。 –

+0

ここからストリングマッチングのものを取り上げました:http://stackoverflow.com/questions/5091057/how-to-find-a-whole-word-in-a-string-in-java – Dave

1

各行にString.containsメソッドを使用します。各行はwhileループで処理されます。

1

String.indexOf()またはString.contains()メソッドを使用してください。

関連する問題