如何在java中拒绝空白作为输入
我试图创建一个代码,拒绝只包含空格/空格的答案。到目前为止,我已经编写了一个代码来拒绝空输入,但是一旦用户输入空格,程序就会接受它 我如何防止这种情况?谢谢大家!如何在java中拒绝空白作为输入,java,Java,我试图创建一个代码,拒绝只包含空格/空格的答案。到目前为止,我已经编写了一个代码来拒绝空输入,但是一旦用户输入空格,程序就会接受它 我如何防止这种情况?谢谢大家! do { while(true) { System.out.print("Dog's name: "); String dogName = null; dogName = scan.nextLine().toLowerCase();
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;
}
在这种情况下,trim()方法非常方便。从:
返回字符串的副本,包括前导和尾随空格
省略
您可以这样使用它:
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;
}
}
在这种情况下,trim()方法非常方便。从:
返回字符串的副本,包括前导和尾随空格
省略
您可以这样使用它:
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;
}
}
您可以使用String.matches检查空字符串:
if (dogName.matches("^\\s*$") || dogName.isEmpty()) {
System.out.println("Error: Name can't be empty.");
continue;
}
您可以使用String.matches检查空字符串:
if (dogName.matches("^\\s*$") || dogName.isEmpty()) {
System.out.println("Error: Name can't be empty.");
continue;
}
trim()将删除前导和尾随的空格,如果整个字符串都是由空格组成的,那么这将替换全部并留下一个空字符串。e、 g
“狗”->“狗”
“狗名”->“狗名”
如果检查空/空白将很常见,那么请查看StringUtils.isNotBlank中的“灵感”,并根据这些内容编写自己的静态util方法 dogName.trim()将删除前导空格和尾随空格,如果整个字符串由空格组成,则将替换所有空格并留下一个空字符串。e、 g
“狗”->“狗”
“狗名”->“狗名”
如果检查空/空白将很常见,那么请查看StringUtils.isNotBlank中的“灵感”,并根据这些内容编写自己的静态util方法 一个简单的解决方案,用
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;
}
}
一个简单的解决方案,用
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;
}
}
谢谢大家的帮助!我刚刚在代码中添加了.trim() 现在是:
字符串dogName=scan.nextLine().toLowerCase().trim() 谢谢大家的帮助!我刚刚在代码中添加了.trim() 现在是:
字符串dogName=scan.nextLine().toLowerCase().trim()
n
是删除空格的字符串。您只需检查是否(n.isEmpty())
n
是删除空格的字符串。您只需检查if(n.isEmpty())
。它只会删除前导空格和training空格。如果字符串仅包含空格,则所有空格都是前导空格和尾随空格,因此结果是空字符串。这也会更改(修剪)有效输入。就狗的名字而言,这可能无关紧要,除非你有一只叫“Fido”的狗,它前面或后面有空格。如果您使用此代码,您应该注意这一点。它将仅删除前导空格和尾随空格。如果字符串仅包含空格,则所有空格都是前导空格和尾随空格,因此结果是空字符串。这也将更改(修剪)有效输入。就狗的名字而言,这可能无关紧要,除非你有一只叫“Fido”的狗,它前面或后面有空格。如果您使用此代码,您应该知道这一点。