我想分割这个字符串:
=IF(BI18=0;INT(年份(TODAY()));IF(INT(年份(BI18))>2025;2025;INT(年份(BI18))))
[IF, BI18=0, INTYEARTODAY, IF, INTYEARBI18>2025, 2025, INTYEARBI18]
我用正则表达式尝试过:
String[] result = text.substring(1, text.length()).split("[;()]+");
但是,我得到:
[IF、BI18=0、INT、年份、今天、IF、INT、年份、BI18、>2025、2025、INT、年份、BI18]
我正在努力识别一般的 Excel 方法。
非常感谢您的回答,按照预期一般分割字符串。
最佳答案
根据评论,如果您想要 IF(...)
条件的主要内容,其中 ...
是内容,这里有一个快速解决方案。
请注意,尽管此解决方案适用于手头的输入,但在其他情况下,使用嵌套语句,它可能不可靠 - 基本上这是一种解决方法。
String formula = "=IF(BI18=0;INT(YEAR(TODAY()));IF(INT(YEAR(BI18))>2025;2025;INT(YEAR(BI18))))";
// | positive lookbehind: starts with "IF("
// | | any character, reluctantly quantified
// | | | positive lookahead, followed by
// | | | ")", then...
// | | | | ";" or end of input
// | | | |
Pattern p = Pattern.compile("(?<=IF\\().+?(?=\\)(;|$))");
Matcher m = p.matcher(formula);
while (m.find()) {
System.out.println(m.group());
}
输出
BI18=0;INT(YEAR(TODAY())
INT(YEAR(BI18))>2025;2025;INT(YEAR(BI18)))
关于java - 按excel条件分割,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24281789/