Я пытаюсь добавить любые строки в текстовом файле, который содержит заданный набор строк. Я создал тестовый файл, в который я помещал одну из этих строк. Мой код должен печатать любую строку в текстовом файле, содержащем одну из этих строк, в той же строке, что и предыдущая строка в текстовом файле. Вот мой код:String.contains регистрируется как! 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
Это не должно произойти. Выход я хочу это:
first line text & append this line
Кто-нибудь знает, почему это интерпретировать вторую строку моего текстового файла, как если бы он не содержит delima, даже если он явно делает? Любая помощь будет оценена по достоинству. Я довольно уверен, что проблема связана с моим утверждением if, но я, очевидно, не эксперт.
'содержит()' ** не ** принимает регулярное выражение! – jlordo
Это так просто? Благодаря! EDIT: Я попытался заменить регулярное выражение на регулярные пять пробелов &, и другое пространство, и это не изменило мой вывод. Означает ли это, что единственный способ сделать это - добавить каждую строку с амперсандом? –
Это немного похоже на проблему [XY] (http://meta.stackexchange.com/questions/66377/what-is-the-xy-problem). В чем основная проблема, которую вы пытаетесь решить? –