Java - 如果单词以用户输入的分隔符结束,则执行x

Bry*_*yce 5 java regex arrays string delimiter

我是Java的新手,目前正在编写一个程序,该程序使用输入参数作为包含句子的文本文件的分隔符,然后根据提供的分隔符确定该文本文件中的句子数.

运行我的Main.java时,我希望用户能够执行以下操作(其中-d是分隔符的标志,后面的字符是分隔符):

java Main -d !?.或java Main -d.?

或任何其他组合.我的问题是:

  1. 将分隔符存储为字符串或数组的最佳方法是什么?
  2. 如何干净地告诉我的程序使用传递的分隔符?目前我的程序执行以下操作:

检查单词是否以指定的任何分隔符结束.喜欢:

 if (word.endsWith(".")  || word.endsWith("!")  || word.endsWith("?")) {
           sentenceCount++
 }
Run Code Online (Sandbox Code Playgroud)

但相反,我希望它是这样的:

if (word.endsWith(delimitersStringorArray.contains())  {
           sentenceCount++
     }
Run Code Online (Sandbox Code Playgroud)

我希望这是有道理的,如有必要,我可以提供任何进一步的澄清.我试过搜索,但没有找到我的具体问题.

谢谢!

Dav*_*INO 4

也许最好的方法是使用数组作为分隔符String。那是因为该方法endsWith使用 aString作为参数。

问题是类中的 endWith 的实际版本java.lang.String不接受可能的分隔符数组,但可以创建自定义代码来执行相同的操作,如下所示:

public class StringUtility {
    public static boolean endsWith(String str, String[] delimiters) {
        for (String delimiter : delimiters) {
            if (str.endsWith(delimiter)) {
                return true;
            }
        }
        return false;
    }
}
Run Code Online (Sandbox Code Playgroud)

并使用如下代码来调用它

String[] delimiters = { ".", "!", "?" };
if (StringUtility.endsWith("yourWord", delimiters)) {
    // Do something
}
Run Code Online (Sandbox Code Playgroud)

请注意,这是比您请求的代码更通用的代码,因为您可以检查传递的字符串是否以多个字符的分隔符结尾。