텍스트 파일을 Java의 단일 단위로 표시하고 텍스트의 문자열 일치
-
03-07-2019 - |
문제
텍스트 파일 (또는 XML 파일)을 전체 문자열로 표시하고 특정 문자열을 검색 (또는 일치)하려면 어떻게해야합니까?
BufferedReader 객체를 만들었습니다.
BufferedReader input = new BufferedReader(new FileReader(aFile));
그런 다음 다음과 같은 다른 구분 장치를 지정하기 위해 스캐너 클래스를 사용하려고했습니다.
//Scanner scantext = new Scanner(input);
//Scanner scantext = new Scanner(input).useDelimiter("");
Scanner scantext = new Scanner(input).useDelimiter("\n");
while (scantext.hasNext()) { ... }
이와 같은 스캐너 클래스를 사용하면 텍스트를 한 줄씩 또는 단어별로 읽을 수 있지만 때로는 처리하고 싶은 텍스트에서는 도움이되지 않습니다.
</review><review>
그리고 나는 당신이 찾으면 ""<review>
"텍스트의 어느 곳에서나 찾을 때까지 다음 다음 줄 (또는 텍스트 조각)으로 무언가를하십시오."</review>
". 문제는 그 것입니다 <review>
그리고 </review>
텍스트의 다른 장소에 있으며 때로는 다른 텍스트에 붙어 있습니다 (따라서 구분 기자로서 빈 공간은 나를 도와주지 않습니다).
Java (패턴 및 매칭 클래스)에서 정규식 API를 사용할 수 있다고 생각했지만 특정 문자열이나 줄과 일치하는 것처럼 보이며 텍스트를 하나의 연속 문자열로 사용하고 싶습니다 (적어도 이것은 내 인상이었습니다. 내가 그들에 대해 읽은 것에서). 이 경우 어떤 구조/방법/클래스를 사용해야하는지 말해 주시겠습니까? 고맙습니다.
다른 팁
마치 당신이 구조화 된 XML 파일로 작업하려고하는 것처럼 보이며, 당신이 조사 할 것을 제안합니다. javax.xml.parsers.documentBuilder 또는 기타 내장 아피스 문서를 구문 분석합니다.
XML 파서를 사용하십시오.
또는 이와 같이 xpath를 사용하십시오 예시.
Java (패턴 및 매칭 클래스)에서 정규식 API를 사용할 수 있다고 생각했지만 특정 문자열이나 줄과 일치하는 것처럼 보이며 텍스트를 하나의 연속 문자열로 사용하고 싶습니다.
음, XML 파일을 문자열로 읽은 다음 일반 표현식 API를 사용하여 작동하지 않습니까?
예 : 예를 들어 문자열로 파일을 쉽게 읽을 수 있습니다. 파일 아파치에서 커먼즈 IO: 보다 readFileToString(File file, String encoding)
.
나는 또한 XML Parsing API를 사용하는 것이 좋습니다 ... 그러나 "검토"태그의 경우에만 무언가를하고 싶기 때문에 Dom보다 Sax를 더 잘 사용할 수 있습니다 ...
여기서는 텍스트 파일의 개별 행을 문자열로 복사 한 다음 문자열 (줄)과 하위 문자열 (검색 문자열)을 일치시킬 수 있습니다.
그러나 / # 등과 같은 MetachAracters를 엑드된 동안 오류가 발생합니다.