Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java-如果单词以用户输入的分隔符结尾,则执行x_Java_Arrays_Regex_String_Delimiter - Fatal编程技术网

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

Java-如果单词以用户输入的分隔符结尾,则执行x,java,arrays,regex,string,delimiter,Java,Arrays,Regex,String,Delimiter,我是Java新手,目前正在编写一个程序,该程序使用输入的参数作为包含句子的文本文件的分隔符,然后根据提供的分隔符确定该文本文件中的句子数 运行my Main.java时,我希望用户能够执行以下操作(其中-d是分隔符的标志,以下字符是分隔符): javamain-d!?。或者Javamain-d 或任何其他组合。我的问题是: 将分隔符存储为字符串或数组的最佳方式是什么 如何清楚地告诉我的程序使用正在传递的分隔符?目前,我的程序执行以下操作: 检查单词是否以指定的任何分隔符结尾。比如: if (w

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

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

javamain-d!?。或者Javamain-d

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

  • 将分隔符存储为字符串或数组的最佳方式是什么
  • 如何清楚地告诉我的程序使用正在传递的分隔符?目前,我的程序执行以下操作:
  • 检查单词是否以指定的任何分隔符结尾。比如:

     if (word.endsWith(".")  || word.endsWith("!")  || word.endsWith("?")) {
               sentenceCount++
     }
    
    但我希望它是这样的:

    if (word.endsWith(delimitersStringorArray.contains())  {
               sentenceCount++
         }
    
    我希望这是有道理的,如有必要,我可以提供任何进一步的澄清。我试着搜索,但没有找到我的具体问题


    谢谢

    如果分隔符只有一个字符长,可以将分隔符存储在
    列表中,然后检查
    字符串的最后一个字符是否在此列表中:

    List<Character> delimiters = new ArrayList<Character>();
    delimiters.add('.'); 
    delimiters.add('!');  
    delimiters.add('?');  
    
    if(delimiters.contains(word.charAt(word.length() - 1))){
    
      sentenceCount++;
    }
    
    List delimiters=new ArrayList();
    分隔符。添加('.');
    分隔符。添加(“!”);
    分隔符。添加(“?”);
    if(delimiters.contains(word.charAt(word.length()-1))){
    句子计数++;
    }
    
    最好的方法可能是使用
    字符串作为分隔符。
    这是因为方法
    endsWith
    使用
    String
    作为参数

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

    public class StringUtility {
        public static boolean endsWith(String str, String[] delimiters) {
            for (String delimiter : delimiters) {
                if (str.endsWith(delimiter)) {
                    return true;
                }
            }
            return false;
        }
    }
    
    要调用它,请使用如下代码

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

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

    是,必须始终使用干净的代码。更好的阅读意味着更好的理解,更好的测试,更简单的进化。这很好。非常感谢各位!