gpt4 book ai didi

java - String.contains 注册为 !String.contains

转载 作者:行者123 更新时间:2023-12-02 06:54:19 27 4
gpt4 key购买 nike

我试图在文本文件中 append 包含给定字符串集的任何行。我创建了一个测试文件,在其中放置了这些字符串之一。我的代码应该将文本文件中包含这些字符串之一的任何行打印在与文本文件中的上一行相同的行上。这是我的代码:

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,尽管它显然包含 delima?任何帮助,将不胜感激。我相当确定问题与我的 if 语句有关,但我显然不是这里的专家。

最佳答案

String.contains() 方法匹配精确的字符串,而不是正则表达式。

相反,您可能希望尝试使用 String.matches() 。您可能需要调整您的模式以获得与 contains() 类似的行为(有关一些示例,请参阅 this page)。

关于java - String.contains 注册为 !String.contains,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17578685/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com