gpt4 book ai didi

java - 如何有效地找到最小的正整数?

转载 作者:搜寻专家 更新时间:2023-11-01 04:01:12 25 4
gpt4 key购买 nike

我正在阅读我想找到第一句结尾的文本,此时是“.”、“?”或“!”的第一个索引。在一个字符串中。所以这是我的 Java 代码:

int next = -1;
int nextQ = text.indexOf("? ");
int nextE = text.indexOf("! ");
int nextDot = text.indexOf(". ");
if (nextDot > 0) {
next = nextDot;
if (nextQ > 0){
if (nextQ < next) {next = nextQ;}
if (nextE > 0) {
if (nextE < next) {next = nextE;}
}
} else if (nextE > 0){
if (nextE < next) {next = nextE;}
}
} else if (nextQ > 0){
next = nextQ;
if (nextE > 0 && nextE < next){next = nextE;}
} else if (nextE > 0) { next = nextE;}

我相信代码可以工作,但总共有 10 个 if 语句,看起来不太整洁。我可能想在那里添加更多的句子分隔符,但我认为这种方法不是很灵活。有没有更好的方法来做同样的事情?有没有更短的方法可以达到相同的结果? ...或者我应该尝试使用其他编程语言来解决此类问题吗?哪个?

最佳答案

我建议使用正则表达式一次搜索任何这些分隔符。

String text = <TEXT>;
int next;
Pattern p = Pattern.compile("\\? |! |\\. ");
Matcher m = p.matcher(text);
if (m.find()) {
int next = m.start();
} else next = -1;

您可以更改正则表达式以准确调整匹配的内容。例如,我建议您不要在定界符后恰好需要一个空格,而是需要任何空白字符,这样换行符或制表符也可以使用。这将如下所示:"\\?\\s|!\\s|\\.\\s"。您将能够以类似的方式添加额外的分隔符,并通过一些额外的工作能够检测触发了哪个分隔符。

Pattern 类中 Java 正则表达式的文档是 here和一个有用的教程 here .

关于java - 如何有效地找到最小的正整数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26084158/

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