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

Posted

技术标签:

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

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

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

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

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

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

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

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

但我希望它是这样的:

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

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

谢谢!

【问题讨论】:

【参考方案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

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

【讨论】:

是的,干净的代码始终是必须的。更好的阅读意味着更好的理解、更好的测试、更简单的发展。 这很棒。非常感谢你们!

以上是关于Java - 如果单词以用户输入的分隔符结尾,则执行 x的主要内容,如果未能解决你的问题,请参考以下文章

java_单词长度

程序设计入门—Java语言 第六周编程题 1 单词长度(4分)

词频统计(30 分)

输入盘符或者每串字符以0分隔,最后以00结尾

7-1 词频统计 (30 分)

单词长度