答案 0 :(得分:0)
是的。
一种方法是获取所需的所有Unicode字符列表,然后以编程方式搜索String
。
例如,km²包含上标,Unicode值为u00B2
请按以下方式检查String
:
if(yourString.contains("\u00B2")){
System.out.println("yay");
}
答案 1 :(得分:0)
1纯Unicode
以下内容将用空字符串替换不在脚本上标/下标中的所有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是&#34;类型设置&#34;原始风格的文字。因为这样的上标可能是较小的文字移动了一点点。原来的<sup>...</sup>
(比方说)不再可用。也许人类可以通过其字体资源识别PDF中的较小字体。
在这种情况下,您可以遍历文本元素并查看定位。例如,使用 itext 库。没有乐趣。