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的主要内容,如果未能解决你的问题,请参考以下文章