주어진 문자열 집합을 포함하는 텍스트 파일에 임의의 줄을 추가하려고합니다. 테스트 파일을 만들었는데, 그 중에 하나를 넣었습니다. 내 코드는 텍스트 파일의 이전 줄과 같은 줄에이 문자열 중 하나를 포함하는 텍스트 파일의 모든 줄을 인쇄해야합니다. 내 텍스트 파일의String.contains as registered string.contains
import java.io.File;
import java.io.FileNotFoundException;
import java.util.ArrayList;
import java.util.Scanner;
public class AppendIfFromFileScanner {
public static void main(String args[]) {
File file = new File("C:\\Users\\frencke\\workspace\\Testing Stuff\\Append Tetsing\\file3.txt");
ArrayList<String> lines = new ArrayList<String>();
String delima = "\\s+\\s+\\s+\\s+\\s+&\\s+";
String delimb = "\\s+\\s+\\s+\\s+\\s+\\+\\s+";
String delimc = "\\s+\\s+\\s+\\s+\\s+z\\s+";
String delimd = "\\s+\\s+\\s+\\s+\\s+1\\s+";
String delime = "\\s+\\s+\\s+\\s+\\s+2\\s+";
String delimf = "\\s+\\s+\\s+\\s+\\s+3\\s+";
String delimg = "\\s+\\s+\\s+\\s+\\s+4\\s+";
String delimh = "\\s+\\s+\\s+\\s+\\s+5\\s+";
String delimi = "\\s+\\s+\\s+\\s+\\s+6\\s+";
String delimj = "\\s+\\s+\\s+\\s+\\s+7\\s+";
String delimk = "\\s+\\s+\\s+\\s+\\s+8\\s+";
String deliml = "\\s+\\s+\\s+\\s+\\s+9\\s+";
String delimm = "\\s+\\s+\\s+\\s+\\s+a\\s+";
String delimn = "\\s+\\s+\\s+\\s+\\s+b\\s+";
String delimo = "\\s+\\s+\\s+\\s+\\s+c\\s+";
String delimp = "\\s+\\s+\\s+\\s+\\s+d\\s+";
String delimq = "\\s+\\s+\\s+\\s+\\s+e\\s+";
String delimr = "\\s+\\s+\\s+\\s+\\s+f\\s+";
try {
Scanner scanner = new Scanner(file);
while (scanner.hasNextLine()) {
lines.add(scanner.nextLine());}
for(int i=0; i<lines.size(); i++){
for(String s=null; i<lines.size(); i++){
s = lines.get(i);
if(!s.contains(delima)||
!s.contains(delimb)||
!s.contains(delimc)||
!s.contains(delimd)||
!s.contains(delime)||
!s.contains(delimf)||
!s.contains(delimg)||
!s.contains(delimh)||
!s.contains(delimi)||
!s.contains(delimj)||
!s.contains(delimk)||
!s.contains(deliml)||
!s.contains(delimm)||
!s.contains(delimn)||
!s.contains(delimo)||
!s.contains(delimp)||
!s.contains(delimq)||
!s.contains(delimr))
System.out.print("\r\n" + s);
else if(s.contains(delima)||
s.contains(delimb)||
s.contains(delimc)||
s.contains(delimd)||
s.contains(delime)||
s.contains(delimf)||
s.contains(delimg)||
s.contains(delimh)||
s.contains(delimi)||
s.contains(delimj)||
s.contains(delimk)||
s.contains(deliml)||
s.contains(delimm)||
s.contains(delimn)||
s.contains(delimo)||
s.contains(delimp)||
s.contains(delimq)||
s.contains(delimr))
System.out.print(s);}
}
}catch (FileNotFoundException e) {
System.out.println("Cannot find file.");
}
}
}
내용과 같습니다 :
그러니까 기본적으로first line
text & append this line
, 내 텍스트 파일이 이러한 문자열 중 하나 (이 경우, delima)가 있는지 알고 여기 내 코드입니다 . 그러나 내 출력은 다음과 같습니다.
first line
text & append this line
발생하지 않을 것입니다. 내가 원하는 출력은 다음과 같습니다 그것이 delima를 포함하지 않는 것처럼 내 텍스트 파일의 두 번째 줄을 해석 왜
first line text & append this line
는 아는 사람 있나요, 그것은 명확하지 않더라도? 어떤 도움을 주시면 감사하겠습니다. 나는이 문제가 if 문과 관련이 있다고 확신하지만, 분명히 여기서 전문가가 아니다.
'contains()'**는 ** 정규 표현식을 사용하지 않습니다! – jlordo
그게 간단합니까? 감사! 편집 : 일반 정규 5 공백, &, 및 다른 공백으로 정규식을 바꾸려고 시도하고 내 출력 변경되지 않았습니다. 즉, 모든 행에 앰퍼샌드를 추가하는 것이 유일한 방법입니다. –
이것은 [XY 문제] (http://meta.stackexchange.com/questions/66377/what-is-the-xy-problem)와 조금 비슷합니다. 해결하려는 근본적인 문제는 무엇입니까? –