2017-09-27 40 views
-1

标或下标有没有一种方法来检查,如果是从PDF文档中提取的字符串包含上标或下标字符串如何检查包含在Java

例如:

enter image description here

+0

*“从pdf文档中提取的字符串”* - 该字符串是如何从PDF中提取的?字符串是否包含上标/下标或者是在提取过程中丢失的细节?目前对你的问题的回答假设前者,但你提到字符串的来源似乎指向后者。 – mkl

回答

0

是有。

一种方法是获取所有需要的Unicode字符的列表,并以编程方式搜索您的String

例如,平方公里包含标,和Unicode值u00B2

因此,请检查您的String线沿线的:

if(yourString.contains("\u00B2")){ 
      System.out.println("yay"); 
     } 
0

1纯净的Unicode

以下将用e替换脚本上标/下标中未包含的所有Unicode字符空字符串,只留下超/下标。

问题是存在没有归类的上标和下标,如²³。看维基百科。这些必须列出。

System.out.println(s.replaceAll("(?U)[^²³\\p{InSuperscripts_and_Subscripts}]", "")); 

boolean isSuperOrSubscript(int codePoint) { 
    return Character.getName(codePoint).contains("SUPERSCRIPT") 
     || Character.getName(codePoint).contains("SUBSCRIPT") 
     || new String(new int[] {codePoint}, 0, 1) 
       .matches("(?U)\\p{InSuperscripts_and_Subscripts}"); 
} 

但是,上述情况不会发现例如。

2 PDF样式文本

PDF是一种 “类型设置为” 原始样式文本。因为这样的上标可能会更小一点的文字移动一点。原来的<sup>...</sup>(说)不再可用。可能由人类通过其字体资源在PDF中为较小的字体。

在这种情况下,您可能会遍历文本元素并查看定位。例如用itext库。不好玩。

相关问题