如何检查只包含一个单词的字符串。如果一个字符串有一个句子,它应该返回false

时间:2016-07-02 05:59:42

标签: java string

我知道提出这样的问题很奇怪。但我没有选择。问题是

我遇到过一个要求,我碰巧添加了一个条件,如果有一个输入作为字符串,我应该能够允许所有只包含一个单词的字符串。所以如果有很多话,我应该拒绝。 当我对这样的字符串没有特异性时,如何添加这样的检查。

3 个答案:

答案 0 :(得分:6)

如果单词由某种空格分隔,则可以使用简单的正则表达式:

Pattern wordPattern = Pattern.compile("\\w+");
Matcher wordMatcher = wordPattern.matcher(inputString);
if (!wordMatcher.matches()) {
    // discard user input
}

这将匹配所有单词字符([a-zA-Z_0-9])。如果您对" word"的定义不同的是,正则表达式需要进行调整。

答案 1 :(得分:1)

你可以通过很多方式实现它, 其中最简单的是..

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
}

答案 2 :(得分:0)

您可以将字符串拆分为表示一系列空格的正则表达式,然后查看您获得的部分数量。这是一个功能:

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

如果你想说一个空字符串不是单词,那么输入字符串的长度检查是必需的,这似乎是合理的。