首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在下一个并发行中搜索字符串(忽略空格)

在下一个并发行中搜索字符串(忽略空格)
EN

Stack Overflow用户
提问于 2013-02-08 10:44:08
回答 2查看 1.4K关注 0票数 1

我正在尝试用Java进行文件比较。如何在下一行中搜索字符串(忽略空格)

例:

\*\*File1\*\* \*\*File2\*\* <name>abc</name> | <name>abc</name> Equal <age>21</age> | Not Equal <company>zyz</company> | <age>21</age> Not Equal | <company>zyz</company> Not Equal

目前我的逻辑是使用CSV的字符串

####Start of File####,abc,21,zyz,zyz

问题:在CSV的第二行中,年龄值为空白。当我的程序检查File1中的第二行和File2中的第二行时,它们是不相等的,因此对于相应的行也是假的。

需要实现的:我必须忽略空格并检查下一个出现的值,如果两者相等,那么将file1的第二行向下移动。

输出必须如下所示

\*\*File1\*\* \*\*File2\*\* <name>abc</name> | <name>abc</name> | <age>21</age> | <age>21</age> <company>zyz</company> | <company>zyz</company>

以下是我迄今所尝试过的

代码语言:javascript
复制
public List<String> FileCompare(String source, String target) {
try {
    //String source="D:/reference.xml";
    //String target="D:/comparison.xml";
    //Diff d=new Diff(myControlXML, myTestXML);
    FileReader fr = new FileReader(source); 
    FileReader fr1 = new FileReader(target);

    BufferedReader br = new BufferedReader(fr);
    BufferedReader br2 = new BufferedReader(fr1);

    String s1,s2;

    String st= new String();
    String st2= new String();


    while((s1 = br.readLine()) != null) { 
            myList.add(s1);
            st=st.concat(s1);   
            //System.out.println(s1);
    } 

    Collections.addAll(myList, "#########Start of target#########");

    while((s2 = br2.readLine())!=null){

        st2=st2.concat(s2);

        myList1.add(s2);
    }
    myList.addAll(myList1);
    System.out.println(myList);
    //System.out.println(myList1);
}
catch (IOException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
}
return myList;
}

这是主要代码

代码语言:javascript
复制
    Compare c=new Compare();
//FileCompare returns CSV string
List<String> s=c.FileCompare("D:/reference.xml", "D:/comparison.xml"); 

String pdf=s.toString();
String[] tokens=pdf.split(",");
for(String token:tokens)
    System.out.println(token);

我如何通过忽略空格来实现这一点呢?请帮帮忙

非常感谢!

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-02-08 13:39:59

如果字符串不是null,则这两个循环都会串连在一起,而不检查字符串是否实际上充满了空白空间。尝试以下操作以防止追加空白行:

代码语言:javascript
复制
s1 = br.readLine();
while(s1 != null) { 
    if(s1.trim().length() > 0) {
        myList.add(s1);
        st=st.concat(s1);   
        //System.out.println(s1);
    }
    s1 = br.readLine();
}

s2和他的循环也是如此。

票数 0
EN

Stack Overflow用户

发布于 2013-02-08 10:53:04

我猜您要将文件拆分为逗号分隔的values.So,您有两个逗号分隔值数组,每个数组对应于特定的文件。比较两个array.If的第一个值--它们是相等的,对于您遇到的任何条目的空空间,增量计数器,在两个数组中遇到的计数器-- alone.If,增量都是。

我希望你得到了阿尔戈。

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

https://stackoverflow.com/questions/14770763

复制
相关文章

相似问题

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