Java 如何检查只包含一个单词的字符串。如果字符串有一个句子,它应该返回false
我知道问这样的问题很奇怪。但我别无选择。问题是Java 如何检查只包含一个单词的字符串。如果字符串有一个句子,它应该返回false,java,string,Java,String,我知道问这样的问题很奇怪。但我别无选择。问题是 我遇到了一个需求,我碰巧添加了一个条件,如果有一个作为字符串的输入,我应该能够允许所有只包含一个单词的字符串。所以如果有很多话我应该拒绝。 当我对这样的字符串没有特殊性时,如何添加这样的检查 如果单词之间用某种空格分隔,可以使用简单的正则表达式: Pattern wordPattern = Pattern.compile("\\w+"); Matcher wordMatcher = wordPattern.matcher(inputString);
我遇到了一个需求,我碰巧添加了一个条件,如果有一个作为字符串的输入,我应该能够允许所有只包含一个单词的字符串。所以如果有很多话我应该拒绝。
当我对这样的字符串没有特殊性时,如何添加这样的检查 如果单词之间用某种空格分隔,可以使用简单的正则表达式:
Pattern wordPattern = Pattern.compile("\\w+");
Matcher wordMatcher = wordPattern.matcher(inputString);
if (!wordMatcher.matches()) {
// discard user input
}
这将匹配所有单词字符(
[a-zA-Z_0-9]
)。如果您对“word”的定义不同,则需要对正则表达式进行调整。您可以通过多种方式实现它,
最简单的一个例子是
String str = "abc def";
String [] array = str.trim().split(" ");
if(array.lenght==1){
// allow if lenght = 1, or a word....
}else{
// don't allow if lenght !=1 , or not a word..., dosomething else, or skip
}
您可以在表示一系列空格的正则表达式上拆分字符串,然后查看得到多少部分。下面是一个函数:
public static boolean is_word(String s) {
return (s.length() > 0 && s.split("\\s+").length == 1);
}
System.out.println(is_word("word"));
System.out.println(is_word("two words"));
System.out.println(is_word("word\tabc\txyz"));
System.out.println(is_word(""));
输出:
true
false
false
false
真的
假的
假的
假的
如果要说空字符串不是单词,则需要对输入字符串进行长度检查,这似乎是合理的。什么是单词?它们是否包含空格?请检查字符串中的空格。@nlloyd它可以是任何字符sequence@KishoreKumarKorada也许您应该添加一些示例和/或澄清输入字符串中单词的分隔方式如果下面的答案之一解决了您的问题,您应该接受它(单击相应答案旁边的复选标记)。这有两件事。它让每个人都知道你的问题已经解决到令你满意的程度,并让帮助你的人相信你的帮助。为了得到一个完整的解释