我正在对findInLine对象进行测试,但它不起作用,我不知道为什么。 这是代码:
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
System.out.print("enter string: ");
String a = null;
String pattern ="(,)";
if (input.findInLine(pattern) != null){
a = input.nextLine();
}
System.out.println(a);
enter string: (9,9) <---------- that is what i wrote
这是output: 9)
如果我想要变量a
将获得我写的所有字符串,我需要做的是:a = (9,9)
而不是a = 9)
答案 0 :(得分:0)
你需要在正则表达式中转义括号。现在正则表达式与逗号匹配。
此外,您应该意识到Scanner.findInLine()
也会在输入上前进。
尝试
String pattern = "\\([0-9]*,[0-9]*\\)";
String found = input.findInLine(pattern);
System.out.println(found);
验证这一点。
答案 1 :(得分:0)
无论我理解什么。您想要输入一些字符串,如果该字符串与您的模式匹配,则需要在控制台中显示该字符串。这将为您提供正确的输出。
import java.util.Scanner;
public class InputScan {
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
String a;
System.out.print("enter string: ");
String pattern = "\\(\\d+,\\d+\\)"; // Its regex
// For white spaces as you commented use following regex
// String pattern = "\\([\\s+]?\\d+[\\s+]?,[\\s+]?\\d+[\\s+]?\\)";
if ((a = input.findInLine(pattern)) != null){
System.out.println(a);
}
}
}
输入:
(9,9)
输出:
(9,9)