在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。
有想法吗?
除了(包含)还有其他搜索方法吗?
谢谢。
答案 0 :(得分:0)
``请问您可以添加更多详细信息吗?
主要问题可能是
1. 2个字符串之一中的多余空间
像:“ abcd”“ abcd”
这两个字符串不相等
字符串未正确提取,所以请您添加更多有关如何从pdf提取数据的详细信息
如果字符串不是英语,则编码有问题
这是一个可能有帮助的代码
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));
}
}