Java:限制字符串中的字符
Java: Limiting characters in a string
我将如何通过扫描仪和字符串接受用户的特定字符?
例如如果我只想要两个字符,“*”和“”(一个空格)用于输入。其他的都是无效的,会提示用户输入不足,重做不提交。
干杯!
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
}
matches
测试整个 input
字符串是否与模式匹配。该模式由字符 class 中的零个或多个字符序列匹配(第二个 *
表示零次或多次出现),字符 class 由两个字符 space 和 *
.
如果你需要输入至少一个字符,把第二个*
改成+
,还要改一下错误信息。或者添加一个单独的 input.isEmpty()
测试。
关于Scanner
:使用scanner.nextLine()
输入整行。 (其他 Scanner
方法在看到 space 个字符时往往会停止,这不是我认为您想要的。)
您可以使用 RegEx 字符集排除:
if (input.matches(".*[^* ].*")) {
//wrong input
} else {
//ok!
}
请注意,将传递一个空字符串作为有效字符串,是否额外验证字符串的长度取决于您的用例。
如果你想在输入 之后检查字符串的内容 那么你可以检查它是否匹配正则表达式 [* ]+
这意味着:一个或多个系列 (+
字符的量词 '*'
或 ' '
(space).
代码:
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);
我将如何通过扫描仪和字符串接受用户的特定字符?
例如如果我只想要两个字符,“*”和“”(一个空格)用于输入。其他的都是无效的,会提示用户输入不足,重做不提交。
干杯!
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
}
matches
测试整个 input
字符串是否与模式匹配。该模式由字符 class 中的零个或多个字符序列匹配(第二个 *
表示零次或多次出现),字符 class 由两个字符 space 和 *
.
如果你需要输入至少一个字符,把第二个*
改成+
,还要改一下错误信息。或者添加一个单独的 input.isEmpty()
测试。
关于Scanner
:使用scanner.nextLine()
输入整行。 (其他 Scanner
方法在看到 space 个字符时往往会停止,这不是我认为您想要的。)
您可以使用 RegEx 字符集排除:
if (input.matches(".*[^* ].*")) {
//wrong input
} else {
//ok!
}
请注意,将传递一个空字符串作为有效字符串,是否额外验证字符串的长度取决于您的用例。
如果你想在输入 之后检查字符串的内容 那么你可以检查它是否匹配正则表达式 [* ]+
这意味着:一个或多个系列 (+
字符的量词 '*'
或 ' '
(space).
代码:
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);