我在两个不同的项目中使用Apache POI。
第一个项目是一个独立的Java应用程序。这里一切都很好。
第二个项目是Android项目。我可以很好地访问xlsx的工作簿,但是当涉及到计算公式时,它会异常崩溃
java.util.regex.PatternSyntaxException: U_ILLEGAL_ARGUMENT_ERROR \P{IsL}
at java.util.regex.Pattern.compileImpl(Native Method)
at java.util.regex.Pattern.compile(Pattern.java:411)
at java.util.regex.Pattern.<init>(Pattern.java:394)
at java.util.regex.Pattern.compile(Pattern.java:381)
at org.apache.poi.ss.formula.functions.TextFunction$5.<init>(TextFunction.java:124)
at org.apache.poi.ss.formula.functions.TextFunction.<clinit>(TextFunction.java:123)这是所讨论的代码行:
final Pattern nonAlphabeticPattern = Pattern.compile("\\P{IsL}");为什么Android不接受这个呢?正如我所说:它在一个独立的Java应用程序上运行得很好.
发布于 2016-07-14 14:12:28
Android正在使用与Java regex引擎有点不同的ICU regex库。
请参阅https://developer.android.com/reference/java/util/regex/Pattern.html#gnumber
Unicode脚本、块、类别和二进制属性都是用
\p和\P构造编写的,就像在Perl中一样。如果输入具有属性支柱,则\p{prop}匹配;如果输入具有该属性,则\P{prop}不匹配。
因此,模式应该写为
Pattern nonAlphabeticPattern = Pattern.compile("\\P{L}"); https://stackoverflow.com/questions/38376190
复制相似问题