使用具有字符串模式的扫描仪对字符串进行标记化
Tokenize string with scanner with a String pattern
我必须标记一个字符串,其中标记被“-”分开。
String temp = in.readLine();
input_scanner = new Scanner(temp);
token_temp_token_1 = input_scanner.next();
token_temp_token_2 = input_scanner.next(" - ");
token_temp_token_3 = input_scanner.next(" - ");
System.out.println(token_temp_token_1 + " " + token_temp_token_3);
它不打印任何东西。
我不太确定您输入的是哪个输入以及您希望代码执行什么操作,但这应该可以帮助您入门:
Scanner scanner = new Scanner(System.in);
String[] parts = scanner.nextLine().split(" - ");
System.out.println(parts[0] + " " + parts[1]);
你可以这样使用:
String temp = in.readLine();
input_scanner = new Scanner(temp);
token_temp_token_1 = input_scanner.next();
token_temp_token_2 = input_scanner.skip(" - ").next();
token_temp_token_3 = input_scanner.skip(" - ").next();
System.out.println(token_temp_token_1 + " " + token_temp_token_3);
或者像这样:
String temp = in.readLine();
input_scanner = new Scanner(temp);
String[] tokens = input_scanner.nextLine().split(" - ");
if (tokens.length > 2){
System.out.println(tokens[0] + " " + tokens[2]);
}
input_scanner.close();
根据javadoc,方法public String next(String pattern)
的参数不是定界符,而是匹配你的token的正则表达式,相当于:
Pattern tokenRegex = Pattern.compile(someRegex);
Matcher tokenizer = tokenRegex.matches(contentToBeTokenized);
List<String> tokens = new ArrayList<>();
while(tokenizer.find()){
String token = tokenizer.group();
tokens.add(token)
}
您应该使用 someString.split(delimiter)
来分隔字符串;这将 return 一个字符串数组除以分隔符。
这取决于您的输入和令牌。如果你编码如下:
String str = "Hello World";
Scanner scanner = new Scanner(str);
System.out.println(scanner.next("Hello"));
System.out.println(scanner.next("World"));
你会看到结果的。在下一行打印 Hello 和 World。
scanner.next(String pattern) 的参数不应该以“”开头。
我必须标记一个字符串,其中标记被“-”分开。
String temp = in.readLine();
input_scanner = new Scanner(temp);
token_temp_token_1 = input_scanner.next();
token_temp_token_2 = input_scanner.next(" - ");
token_temp_token_3 = input_scanner.next(" - ");
System.out.println(token_temp_token_1 + " " + token_temp_token_3);
它不打印任何东西。
我不太确定您输入的是哪个输入以及您希望代码执行什么操作,但这应该可以帮助您入门:
Scanner scanner = new Scanner(System.in);
String[] parts = scanner.nextLine().split(" - ");
System.out.println(parts[0] + " " + parts[1]);
你可以这样使用:
String temp = in.readLine();
input_scanner = new Scanner(temp);
token_temp_token_1 = input_scanner.next();
token_temp_token_2 = input_scanner.skip(" - ").next();
token_temp_token_3 = input_scanner.skip(" - ").next();
System.out.println(token_temp_token_1 + " " + token_temp_token_3);
或者像这样:
String temp = in.readLine();
input_scanner = new Scanner(temp);
String[] tokens = input_scanner.nextLine().split(" - ");
if (tokens.length > 2){
System.out.println(tokens[0] + " " + tokens[2]);
}
input_scanner.close();
根据javadoc,方法public String next(String pattern)
的参数不是定界符,而是匹配你的token的正则表达式,相当于:
Pattern tokenRegex = Pattern.compile(someRegex);
Matcher tokenizer = tokenRegex.matches(contentToBeTokenized);
List<String> tokens = new ArrayList<>();
while(tokenizer.find()){
String token = tokenizer.group();
tokens.add(token)
}
您应该使用 someString.split(delimiter)
来分隔字符串;这将 return 一个字符串数组除以分隔符。
这取决于您的输入和令牌。如果你编码如下:
String str = "Hello World";
Scanner scanner = new Scanner(str);
System.out.println(scanner.next("Hello"));
System.out.println(scanner.next("World"));
你会看到结果的。在下一行打印 Hello 和 World。 scanner.next(String pattern) 的参数不应该以“”开头。