Java文件比较;在下一个并发行中搜索字符串(忽略空白)

Java文件比较;在下一个并发行中搜索字符串(忽略空白),java,full-text-search,compare,string-comparison,stringtokenizer,Java,Full Text Search,Compare,String Comparison,Stringtokenizer,我正在用Java进行文件比较。 如何在下一行中搜索字符串(忽略空格) 例如: **File1****File2** abc | abc相等 21 |不平等 zyz | 21不相等 |zyz不相等 目前,在我的逻辑中,我有一个带有CSV的字符串 abc,21,zyz,##########目标文件的开始###, abc,21,zyz 问题: 在CSV的第二行中,年龄值为空。当我的程序检查文件1中的第二行和文件2中的第二行时,它们不相等,因此相应的行也会显示false 需要实现的内容:我必须忽略空

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

例如:

**File1****File2**
abc | abc相等
21 |不平等
zyz | 21不相等
|zyz不相等
目前,在我的逻辑中,我有一个带有CSV的字符串

abc,21,zyz,##########目标文件的开始###,
abc,21,zyz
问题: 在CSV的第二行中,年龄值为空。当我的程序检查文件1中的第二行和文件2中的第二行时,它们不相等,因此相应的行也会显示false

需要实现的内容:我必须忽略空白并检查下一个出现的值,如果两者相等,则向下移动文件1的第二行

输出必须如下所示

**File1****File2**
abc | abc
|
21  |   21
zyz | zyz
这是我到目前为止试过的

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;
}
公共列表文件比较(字符串源、字符串目标){
试一试{
//String source=“D:/reference.xml”;
//String target=“D:/comparison.xml”;
//Diff d=新的Diff(myControlXML、myTestXML);
FileReader fr=新的FileReader(源);
FileReader fr1=新的FileReader(目标);
BufferedReader br=新的BufferedReader(fr);
BufferedReader br2=新的BufferedReader(fr1);
字符串s1、s2;
String st=新字符串();
字符串st2=新字符串();
而((s1=br.readLine())!=null){
添加(s1);
st=st.concat(s1);
//系统输出打印LN(s1);
} 
Collections.addAll(我的列表为“开始目标”);
而((s2=br2.readLine())!=null){
st2=st2.concat(s2);
myList1.添加(s2);
}
myList.addAll(myList1);
System.out.println(myList);
//System.out.println(myList1);
}
捕获(IOE异常){
//TODO自动生成的捕捉块
e、 printStackTrace();
}
返回myList;
}
这是主要代码

    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);
Compare c=new Compare();
//FileCompare返回CSV字符串
List s=c.FileCompare(“D:/reference.xml”、“D:/comparison.xml”);
字符串pdf=s.toString();
String[]tokens=pdf.split(“,”);
for(字符串标记:标记)
System.out.println(令牌);
我如何通过忽略空白来实现这一点?请帮忙


非常感谢

我猜您正在将文件拆分为逗号分隔的值。因此您有两个逗号分隔值数组,每个数组对应于特定的文件。 比较两个数组中的第一个值。如果它们相等,则增加两个数组的计数器。如果遇到任何条目的空格,则单独增加该计数器。如果在两个数组中都遇到空条目,则同时增加两个


我希望您得到了algo。

如果字符串不为空,则两个循环都会对字符串进行压缩,而不会检查它是否实际充满了空格。请尝试以下操作以防止追加空行:

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
和他的循环也是如此。

如何将其转换为csv?您考虑过SAX和DOM之类的解析器吗?通过比较,你想达到什么目的?@DuniyaHilaDalunga-这是上面更新的帖子,关于我如何将其转换为CSVhey,我没有理解你!这就是你的意思吗?对于(int i=0;i
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;
}
    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);
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();
}