如何将模式与 Java 中的字符串变量匹配
How to match a pattern with String variable in Java
我有一个代码应该获取一个输入,从第一个输入中获取最后两个字母,然后将第二个输入与最后两个字母匹配(例如 glam、slam)。问题是它一直转到 else 语句而不是 if 语句。模式的构建方式是否存在问题?
import java.util.regex.Pattern;
import java.util.regex.Matcher;
import java.util.Scanner;
public class MatchyPattern {
public static void main(String[] args) {
Scanner s = new Scanner(System.in);
System.out.print("Enter the first word: ");
String fw;
fw = s.nextLine();
String lastTwo = fw.substring(fw.length() - 2);
char[] sub = lastTwo.toCharArray();
var p = Pattern.compile("[a-zA-Z]{1,2}" + sub + "]");
System.out.print("Enter the second word: ");
String sw;
sw = s.nextLine();
Matcher m = p.matcher(sw);
if (m.matches()){
System.out.println(fw + " rhymes with " + sw);
}else{
System.out.println("I'm not sure! Sorry!");
}
}
}
您似乎不明白 [C@37f8bb67
(@ 变化之后的部分)是什么,您天真地试图“关闭”括号。你看到的是默认数组toString
,在代码中根本没有意义
您可以只用最后 2 个字符(作为字符串)填充模式
var p = Pattern.compile("[a-zA-Z]{1,2}" + lastTwo);
我有一个代码应该获取一个输入,从第一个输入中获取最后两个字母,然后将第二个输入与最后两个字母匹配(例如 glam、slam)。问题是它一直转到 else 语句而不是 if 语句。模式的构建方式是否存在问题?
import java.util.regex.Pattern;
import java.util.regex.Matcher;
import java.util.Scanner;
public class MatchyPattern {
public static void main(String[] args) {
Scanner s = new Scanner(System.in);
System.out.print("Enter the first word: ");
String fw;
fw = s.nextLine();
String lastTwo = fw.substring(fw.length() - 2);
char[] sub = lastTwo.toCharArray();
var p = Pattern.compile("[a-zA-Z]{1,2}" + sub + "]");
System.out.print("Enter the second word: ");
String sw;
sw = s.nextLine();
Matcher m = p.matcher(sw);
if (m.matches()){
System.out.println(fw + " rhymes with " + sw);
}else{
System.out.println("I'm not sure! Sorry!");
}
}
}
您似乎不明白 [C@37f8bb67
(@ 变化之后的部分)是什么,您天真地试图“关闭”括号。你看到的是默认数组toString
,在代码中根本没有意义
您可以只用最后 2 个字符(作为字符串)填充模式
var p = Pattern.compile("[a-zA-Z]{1,2}" + lastTwo);