gpt4 book ai didi

java - 最好使用正则表达式或 Stringtokenizer 在此 : William Faulkner - 'Light In August' 中查找作者和书名

转载 作者:行者123 更新时间:2023-12-01 19:21:42 25 4
gpt4 key购买 nike

使用regexStringtokenizer来分隔此字符串中的作者和标题是否更好:

William Faulkner - 'Light In August'

这是最简单的正则表达式吗?

Pattern pattern = Pattern.compile("^\\s*([^-]+)-.*$");
Matcher matcher = pattern.matcher("William Faulkner - 'Light In August'");
String author = matcher.group(1).trim();
String bookTitle = matcher.group(2).trim();

这是否太过分了,或者是否有更简单的方法可以使用Stringtokenizer来做到这一点?

基本上,我正在寻找最透明和可维护的解决方案,因为我对正则表达式没有很好的理解,并且获得了上述解决方案的帮助。

最佳答案

您对输入有多少控制权?您能否保证作者和标题始终由 "- " (空格、破折号和空格)分隔?您确定作者不会包含"- "吗?等等。

如果输入相当严格,那么您可以简单地使用 String#split() ,这应该会让你非常清楚地知道你在做什么。 不要使用 StringTokenizer (source):

StringTokenizer is a legacy class that is retained for compatibility reasons although its use is discouraged in new code. It is recommended that anyone seeking this functionality use the split method of String or the java.util.regex package instead.

Mark Byers' answer向您展示如何使用 split()

但是,如果您必须担心输入中的更多变化(例如,破折号周围的空白数量是否可变或根本不存在?),那么使用正则表达式将变得简洁明了。权衡是代码的可读性和意图的清晰度。

关于java - 最好使用正则表达式或 Stringtokenizer 在此 : William Faulkner - 'Light In August' 中查找作者和书名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3962670/

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