我知道提出这样的问题很奇怪。但我没有选择。问题是
我遇到过一个要求,我碰巧添加了一个条件,如果有一个输入作为字符串,我应该能够允许所有只包含一个单词的字符串。所以如果有很多话,我应该拒绝。
当我对这样的字符串没有特异性时,如何添加这样的检查。
答案 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
如果你想说一个空字符串不是单词,那么输入字符串的长度检查是必需的,这似乎是合理的。