簡體   English   中英

String.contains注冊為!String.contains

[英]String.contains registering as !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語句有關,但我顯然不是這里的專家。

String.contains()方法匹配精確字符串,而不是正則表達式。

相反,您可能希望嘗試使用String.matches() 您可能需要調整模式以獲得與contains()類似的行為contains()有關示例,請參閱此頁面 )。

暫無
暫無

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

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