首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >String.contains注册为!String.contains

String.contains注册为!String.contains
EN

Stack Overflow用户
提问于 2013-07-11 02:52:45
回答 1查看 76关注 0票数 0

我尝试在一个文本文件中附加任何包含给定字符串集合的行。我创建了一个测试文件,将其中一个字符串放入其中。我的代码应该将文本文件中包含这些字符串之一的任何行打印到与文本文件中的前一行相同的行。下面是我的代码:

代码语言:javascript
复制
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.");
}
}
}

我的文本文件的内容是:

代码语言:javascript
复制
first line
text     & append this line 

所以基本上,我知道我的文本文件中有一个这样的字符串(在本例中是delima)。然而,我的输出是:

代码语言:javascript
复制
first line
text     & append this line 

这是不应该发生的。我想要的输出是:

代码语言:javascript
复制
first line text     & append this line

有人知道为什么它解释我的文本文件的第二行就好像它不包含delima一样,尽管它很明显包含delima吗?任何帮助都将不胜感激。我相当确定这个问题与我的if语句有关,但我显然不是这方面的专家。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-07-11 02:56:18

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

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

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/17578685

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档