在Java中将第一个文件的一个字符串与第二个文件的所有字符串进行比较

时间:2018-07-14 14:10:13

标签: java string compare

在Java中。

我有2个PDF文件, 我从第一个文件中提取标题,从第二个文件中提取参考部分。

我要检查所有标题部分是否都在参考部分中。

我的问题是如何将所有标题部分作为一个变量,然后在所有参考部分中进行搜索。

这是代码的一部分:

PDFUtil pdfUtil = new PDFUtil();    
String a = pdfUtil.getText("9.pdf");
String Title = a.substring(0,68);                        
System.out.println("The title part: "+Title);

String b = pdfUtil.getText("333.pdf");   
String Refer = b.substring(b.indexOf("Reference")+0,b.length());
if ("Reference".equalsIgnoreCase("Reference")) {    
            System.out.println("The References part of the second file is: "+Refer);
            System.out.println();
  }

   if (Title.contains(Refer)) {
    System.out.println("Found ");
        }

输出部分: 标题部分:为广告服务量身定制的高效大数据收集 第二个文件的“参考”部分是:[1] J. Han,H。Pei和Y. Yin。“挖掘,没有候选者产生的频繁模式”,载于:Proc.Natl.A则。 (所有参考部分)

我尝试了很多方法,但是即使确切的标题部分在参考部分中,输出也始终为false。
有想法吗?

除了(包含)还有其他搜索方法吗?

谢谢。

1 个答案:

答案 0 :(得分:0)

``请问您可以添加更多详细信息吗? 主要问题可能是
1. 2个字符串之一中的多余空间 像:“ abcd”“ abcd” 这两个字符串不相等

  1. 字符串未正确提取,所以请您添加更多有关如何从pdf提取数据的详细信息

  2. 如果字符串不是英语,则编码有问题

这是一个可能有帮助的代码

        String a="stack overflow";
        String b="tack";

        // solution 1 

        System.out.println(a.contains(b));




    // soultion 2

        int counter=0;
        for(int i=0;i<b.length();i++)
        {

            for(int j=0;j<a.length();j++)
            {
                if(b.substring(i,i+1).equals(a.substring(j,j+1)))
                {

                    counter++;
                }
            }

        }
        if(counter>=b.length())
        {
            System.out.println("string found ");
        }
        counter=0;
    // solution 3   fuzzy one 
        int index=0;
        for(int i=0;i<b.length();i++)
        {
            index=a.indexOf(b.substring(i,i+1));
            if(index!=-1)
            {
                counter++;

            }



        }
        if(counter<b.length())
        {

            System.out.println("string not found ");
        }

        else 
        {
            System.out.println("string found ");
        }

解决方案2和3是该方法中的主要问题
String.contains(String)
是2个字符串示例的大小a.contains(b)  如果a的大小小于b的大小,它将返回false来解决此问题,您可以先检查2个字符串的大小,然后再使用.contains

if(a.length()>=b.length())
        {


        System.out.println(a.contains(b));
        }

这是第五种解决方案,可以尝试一下

            String a="Iam in the world of abc";
        String b="world";

  for(int i=0;i<a.length()-b.length();i++)
  {
   //System.out.println(i);

    if(a.substring(i,b.length()+i).equals(b))
  {
     System.out.println("true s");
     System.out.println(a.substring(i,b.length()+i));
  }


        }