字符串如何检查包含在Java
答
是有。
一种方法是获取所有需要的Unicode字符的列表,并以编程方式搜索您的String
。
例如,平方公里包含标,和Unicode值u00B2
因此,请检查您的String
线沿线的:
if(yourString.contains("\u00B2")){
System.out.println("yay");
}
答
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库。不好玩。
*“从pdf文档中提取的字符串”* - 该字符串是如何从PDF中提取的?字符串是否包含上标/下标或者是在提取过程中丢失的细节?目前对你的问题的回答假设前者,但你提到字符串的来源似乎指向后者。 – mkl