참조 : 문자열 검색, 문자 찾기, 지정한 파일 속에서 : Find String(GREP) Example
TextReader.java
TextReader.java |
import java.io.BufferedReader; import java.io.FileReader; import java.io.IOException; import java.util.Iterator; import java.util.TreeSet; import java.util.regex.PatternSyntaxException;
class TextReader { public static void main(String[] args) {
String[] search = new String[2]; TreeSet<String> overlapList = new TreeSet<String>(); search[0] = "GV_"; // 'GV_' 단어를 가지고 있는 모든 열을 검색한다. search[1] = "testText.txt"; // 검색할 *.txt 파일의 파일명(확장자까지 같이 적어줘야 한다.)
// (?i) <- "찾을 문자열"에 대소문자 구분을 없애고 // .* <- 문자열이 행의 어디에 있든지 찾을 수 있게 String findStr = "(?i).*" + search[0] + ".*";
// int lineNumber = 1; // 행 번호
try { BufferedReader buffer = new BufferedReader(new FileReader(search[1])); String low = null;
while ((low = buffer.readLine()) != null) { String[] piece = low.split("[ =><()\"\n]"); // 한줄의 모든 문자영을 다 잘라내어 배열로 보관한다.
for(int i = 0; i < piece.length; i++) { piece[i] = piece[i].trim(); if (piece[i].matches(findStr)) { int last = 0; // lastIndexOf if (piece[i].lastIndexOf("=") != -1) { last = piece[i].lastIndexOf("="); } else if (piece[i].lastIndexOf(">") != -1) { last = piece[i].lastIndexOf(">"); } else if (piece[i].lastIndexOf("<") != -1) { last = piece[i].lastIndexOf("<"); } else if (piece[i].lastIndexOf("") != -1) { last = piece[i].lastIndexOf(""); } else if (piece[i].lastIndexOf(",") != -1) { last = piece[i].lastIndexOf(","); } else if (piece[i].lastIndexOf("\r") != -1) { last = piece[i].lastIndexOf("\r"); } // 콤마(.)또한 건색이 가능하나 구분을 지어줄 필요가 있어 주석처리 // else if (result[i].lastIndexOf(".") != -1) { // last = result[i].lastIndexOf("."); // } String remove = piece[i].substring(0, last);
// 문자열 끝에 존재하는 콤마(.), 쉼표(,)를 제거하기 위해 사용 if (remove.substring(remove.length()-1).equals(".") || remove.substring(remove.length()-1).equals(",")) { remove = remove.substring(0, remove.length()-1); } overlapList.add(remove); } } // 몇번째 로우까지 검색할지를 결정알 break문 사용 // lineNumber++; // if (lineNumber > 10) break; } buffer.close(); Iterator<String> result = overlapList.iterator(); while(result.hasNext()) { System.out.println(result.next()); } } catch (IOException e) { System.err.println(e); // 에러가 있다면 메시지 출력 System.exit(1); } catch (PatternSyntaxException e) { // 정규식에 에러가 있다면 System.err.println(e); System.exit(1); } } }
|