簡體   English   中英

在java中,當找到字符串匹配項時如何在文件中打印整行

[英]in java, how to print entire line in the file when string match found

我有一個名為“ Sample.text”的文本文件。 它包含多行。 從這個文件中,我搜索特定的字符串。如果凝視匹配或在該文件中找到,我需要打印整行。 搜索字符串在行的中間。 我也使用字符串緩沖區從文本文件中讀取字符串后追加字符串。也文本文件太大。所以我不想逐行迭代。 這個怎么做

您可以使用Apache Commons IO的 FileUtils進行操作

小樣本:

    StringBuffer myStringBuffer = new StringBuffer();
    List lines = FileUtils.readLines(new File("/tmp/myFile.txt"), "UTF-8");
    for (Object line : lines) {
        if (String.valueOf(line).contains("something")) { 
            myStringBuffer.append(String.valueOf(line));
        }
    }

我們還可以將正則表達式用於文件中的字符串或模式匹配。

樣例代碼:

import java.util.regex.*;
import java.io.*;

/**
 * Print all the strings that match a given pattern from a file.
 */
public class ReaderIter {
  public static void main(String[] args) throws IOException {
    // The RE pattern
    Pattern patt = Pattern.compile("[A-Za-z][a-z]+");
    // A FileReader (see the I/O chapter)
    BufferedReader r = new BufferedReader(new FileReader("file.txt"));
    // For each line of input, try matching in it.
    String line;
    while ((line = r.readLine()) != null) {
      // For each match in the line, extract and print it.
      Matcher m = patt.matcher(line);
      while (m.find()) {
        // Simplest method:
        // System.out.println(m.group(0));
        // Get the starting position of the text
        int start = m.start(0);
        // Get ending position
        int end = m.end(0);
        // Print whatever matched.
        // Use CharacterIterator.substring(offset, end);
        System.out.println(line.substring(start, end));
      }
    }
  }
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM