gpt4 book ai didi

java - 初始化字符串与连接字符串不同,但打印时结果相同

转载 作者:行者123 更新时间:2023-12-02 05:48:19 24 4
gpt4 key购买 nike

因此,我正在为用户输入创建一个 reg ex 模式和匹配器,并使用串联来生成将用于 Pattern.compile() 的字符串。我无法匹配该模式,但是当我打印串联结果并将其放入 Pattern.compile 中时,它与该模式匹配。我尝试了不同的连接方式,但仍然不匹配。

    for(int i = 0; i < 3; i++){
Matcher elementMatcher = element.matcher(inputArr[i]);
if(elementMatcher.matches()) inputPattern += elemString;
else if(inputArr[i].equals("+") || inputArr[i].equals("*") || inputArr[i].equals(".") || inputArr[i].equals("(")|| inputArr[i].equals(")") || inputArr[i].equals("-") || inputArr[i].equals("/")){
inputPattern += "\\\\";
inputPattern += inputArr[i];
}
else inputPattern += inputArr[i];
inputPattern += "\\\\s*";
}

if(inputPattern.equals("[a-zA-Z]+\\s*\\+\\s*[a-zA-Z]+\\s*"))
System.out.println(inputPattern); //prints [a-zA-Z]+\\s*\\+\\s*[a-zA-Z]+\\s*
pattern1 = Pattern.compile(inputPattern);
matcher1 = pattern1.matcher(value[j]);
if(matcher1.matches()) {
result = value[j];
System.out.println("YO");

}

奇怪的是,它在以下情况下起作用

pattern1 = Pattern.compile("[a-zA-Z]+\\s*\\+\\s*[a-zA-Z]+\\s*");

但是打印 inputPattern 会产生 [a-zA-Z]+\\s*\\+\\s*[a-zA-Z]+\\s*

pattern1 = Pattern.compile(inputPattern); 

产生不同的结果

最佳答案

Java 在字符串文字中具有转义序列。如果字符串包含 \ 则意味着下一个字符将以特殊方式解释。

要将 \ 添加到字符串,您需要对其进行转义 "\\"

这里是一些示例代码:

String s = "\\";

System.out.println(s); // print single slash

关于java - 初始化字符串与连接字符串不同,但打印时结果相同,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56074117/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com