【问题标题】:Java - If word ends with user-entered delimiters, then do xJava - 如果单词以用户输入的分隔符结尾,则执行 x
【发布时间】:2016-05-18 10:24:31
【问题描述】:

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

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

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

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

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

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

 if (word.endsWith(".")  || word.endsWith("!")  || word.endsWith("?")) {
           sentenceCount++
 }

但我希望它是这样的:

if (word.endsWith(delimitersStringorArray.contains())  {
           sentenceCount++
     }

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

谢谢!

【问题讨论】:

    标签: java arrays regex string delimiter


    【解决方案1】:

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

    List<Character> delimiters = new ArrayList<Character>();
    delimiters.add('.'); 
    delimiters.add('!');  
    delimiters.add('?');  
    
    if(delimiters.contains(word.charAt(word.length() - 1))){
    
      sentenceCount++;
    }
    

    【讨论】:

      【解决方案2】:

      可能最好的方法是将String 数组作为分隔符。 那是因为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
      }
      

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

      【讨论】:

      • 是的,干净的代码始终是必须的。更好的阅读意味着更好的理解、更好的测试、更简单的发展。
      • 这很棒。非常感谢你们!
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-10-19
      • 2020-09-03
      • 1970-01-01
      相关资源
      最近更新 更多