我正在尝试创建一个将拒绝仅包含空格的答案的代码。到目前为止,我已经编写了一个代码来拒绝空的输入,但是一旦用户输入了空格,程序就会接受它。
如何防止这种情况?谢谢!
do {
while(true) {
System.out.print("Dog's name: ");
String dogName = null;
dogName = scan.nextLine().toLowerCase();
String n = dogName.replaceAll("\\s", "");
if(dogName.isEmpty()) {
System.out.println("Error: Name can't be empty.");
continue;
}
答案 0 :(得分:4)
在这种情况下,trim()方法非常方便。来自documentation:
返回字符串的副本,带有前导和尾随空格 省略。
您可以通过以下方式使用它:
while (true) {
System.out.print("Dog's name: ");
String dogName = scan.nextLine().trim().toLowerCase();
if (dogName.isEmpty()) {
System.out.println("Error: Name can't be empty.");
continue;
}
}
答案 1 :(得分:0)
您可以使用String.matches检查空字符串:
artifacts.<PROJECT-ID>.appspot.com
us.artifacts.<PROJECT-ID>.appspot.com
答案 2 :(得分:0)
dogName.trim()将删除开头和结尾的空格,如果整个String由空格组成,则它将替换所有空格并留下一个空字符串。例如
“狗”->“狗”
“狗名”->“狗名”
如果要检查是否有空/空白,请查看StringUtils.isNotBlank的“灵感”,并根据这些内容编写自己的静态util方法。
答案 3 :(得分:0)
一个简单的解决方案,使用
更新代码dogName.replaceAll("[^a-zA-Z0-9]", "");
这样,您的代码就会变得...也要记住更新if语句。
do {
while(true) {
System.out.print("Dog's name: ");
String dogName = scan.nextLine().toLowerCase();
String n = dogName.replaceAll("[^a-zA-Z0-9]", "");
if(n.isEmpty()) {
System.out.println("Error: Name can't be empty.");
continue;
}
}
答案 4 :(得分:0)
谢谢大家的帮助!我刚刚在代码中添加了.trim():)
现在是: 字符串dogName = scan.nextLine()。toLowerCase()。trim();