gpt4 book ai didi

Java 字符串解析和评估

转载 作者:行者123 更新时间:2023-12-01 17:34:59 25 4
gpt4 key购买 nike

全部,

我正在重写或重写我不久前编写的一些代码。该代码的目标是根据以下格式的字符串计算日期和时间:

  • 日开始+2小时+1天-2分钟
  • 现在+20天
  • 月份开始+1个月

这将采取一天的开始时间(本地时间),例如2011-09-15 00:00:00 BST (2011-09-15 23:00 GMT) 然后添加 2 小时,添加 1 天,并减去 2 分钟。

该实现是用 Java 实现的,原始算法非常基础。它迭代字符串中的每个字符并附加到缓冲区。然后检查缓冲区,看看它是否以我正在查找的字符串结尾(日期说明符,例如 MINUTE、HOUR、DAYSTART 等),然后提取数字并添加到 ArrayList,其中 DateOffset 是一个带有 int 和 String 的简单类这是日期说明符。这是一些示例代码:

// hard coded for sample
String s = "DayStart+2Hour+1Day-2Minutes";

StringBuilder sbBuffer = new StringBuilder();
String buffer;

// iterate through date string
for (char c : s.toCharArray()) {
sbBuffer.append(c);
buffer = sbBuffer.toString();

// check to see the end of the buffer string is what we expect
if (buffer.endsWith("DAYSTART")) {
offsets.add(new DateOffset(0, "DAYSTART"));
sbBuffer = new StringBuilder();
} else if (buffer.endsWith("DAY") && buffer.length() > 3) {
String numberStringPart = buffer.substring(0, buffer.length() - 3);
numberStringPart = numberStringPart.replaceAll("[+]", "").trim(); // need as parseInt does not like the +.

offsets.add(new DateOffset(Integer.parseInt(numberStringPart), "DAY"));
sbBuffer = new StringBuilder();
} ... and so on ...
else {
}
}

解析字符串后,我迭代 ArrayList 来计算日期时间。

尽管我们没有遇到任何问题,但上述问题可能效率不高。它也不会检测到任何错误,因此您可以输入 DayStart+2GKGKER。

我只是想就如何重写它提出一些新鲜而简洁的想法。我做了一些正则表达式,但不太确定这是否是最好的路线。

有什么想法吗?

谢谢

安德兹

最佳答案

为您的表达式定义语法。看看ANTLR框架来帮助您构建语法并处理表达式。

关于Java 字符串解析和评估,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7429436/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com