Java:限制字符串中的字符
如何通过扫描器和字符串接受用户指定的字符 例如,如果我只需要两个字符,“*”和“”(一个空格)作为输入。其他所有内容都将无效,并将提示用户该内容不足,并在不提交的情况下重做条目 干杯Java:限制字符串中的字符,java,string,character,java.util.scanner,Java,String,Character,Java.util.scanner,如何通过扫描器和字符串接受用户指定的字符 例如,如果我只需要两个字符,“*”和“”(一个空格)作为输入。其他所有内容都将无效,并将提示用户该内容不足,并在不提交的情况下重做条目 干杯 String input = scanner.nextLine(); if (!(input.matches("[ *]*"))) { System.out.println("Please use only space and * characters"); // do something that
String input = scanner.nextLine();
if (!(input.matches("[ *]*"))) {
System.out.println("Please use only space and * characters");
// do something that causes program to loop back and redo input
}
匹配
测试整个输入
字符串是否与模式匹配。模式由字符类中的零个或多个字符序列匹配(第二个*
表示零个或多个出现),字符类由两个字符空间和*
组成
如果需要输入至少一个字符,请将第二个*
更改为+
,但也要更改错误消息。或者添加一个单独的input.isEmpty()
test
至于
扫描仪
:使用Scanner.nextLine()
输入整行。(其他Scanner
方法在看到空格字符时往往会停止,这不是我认为您希望看到的。)您可以使用正则字符集排除:
if (input.matches(".*[^* ].*")) {
//wrong input
} else {
//ok!
}
请注意,将传递一个空字符串作为有效字符串,这取决于您的用例是否额外验证字符串的长度。如果您想在输入字符串后检查字符串的内容,那么您可以检查它是否匹配regex
[*]+
,这意味着:一个或多个(+
量词)的系列字符数'*'
或'
(空格)
代码:
正则表达式和while循环;)非常简单,它出色地完成了工作!谢谢!!:)
System.out.print("Please provide string containing only spaces or * : ");
String userInput = //read input from user
while(!userInput.matches("[* ]+")){
System.out.println("Your input was incorrect.");
System.out.print("Please provide string containing only spaces or * : ");
userInput = //read input from user
}
//here we know that data in userInput are correct
doSomethingWithUserData(userInput);