Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/amazon-s3/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java String.contains注册为!String.contains_Java_Append_Delimiter - Fatal编程技术网

Java String.contains注册为!String.contains

Java String.contains注册为!String.contains,java,append,delimiter,Java,Append,Delimiter,我试图在文本文件中添加包含给定字符串集的任何行。我创建了一个测试文件,在其中放置了一个字符串。我的代码应该将文本文件中包含这些字符串之一的任何一行打印在与文本文件中前一行相同的行上。这是我的密码: import java.io.File; import java.io.FileNotFoundException; import java.util.ArrayList; import java.util.Scanner; public class AppendIfFromFileScanner {

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

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.");
}
}
}
所以基本上,我知道我的文本文件中有一个字符串(在本例中是delima)。然而,我的输出是:

first line
text     & append this line 
这是不应该发生的。我想要的输出是:

first line text     & append this line
有人知道为什么它会将我文本文件的第二行解释为好像它不包含delima,尽管它显然包含delima?任何帮助都将不胜感激。我很确定问题与if语句有关,但我显然不是这里的专家。

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


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

contains()
不接受正则表达式!就这么简单?谢谢编辑:我尝试用普通的五个空格、&、和另一个空格替换正则表达式,但这并没有改变我的输出。这是否意味着唯一的方法是在每一行后面加上一个符号?这感觉有点像一个符号。您试图解决的根本问题是什么?
contains()
基本上是断言您要查找的
字符串
在文本中有一个索引,它的定义是
indexOf()>-1
只需使用一个或如果我使用String.matches(),这不会只追加与delima完全匹配的字符串吗?还是有办法通配符?@ItsanAlias你看过我链接的页面了吗?它显示通配符匹配(因此我认为链接到它是一件明智的事情)。现在,我已将字符串delima设置为“*\\s+\\s+\\s+\\s+\\s+\\s+&\\s+.*”,但它仍然没有给我匹配项。知道为什么吗?哦,我自己想出来的。我没有将所有的
s.contains
更改为
s.matches
。但是,现在我的
if
语句有一个问题。在我的文本文件中,我将
&
更改为
+
以测试
delimb
。它读取的是
如果(!s.matches(delima)| |!s.matches(delimb)
等,并且从
开始读取!s.matches(delima)
返回true,它满足
if
语句,并在新行上打印s。我如何才能使它不满足
if
语句?@ItsanAlias如果您有新问题,请单独发布。尝试解决注释中的大量后续问题通常不会有好结果!
first line text     & append this line