Java String.replace/replaceAll不工作
因此,我试图解析Java中包含(打开)方括号的字符串输入。我有Java String.replace/replaceAll不工作,java,regex,string,replace,Java,Regex,String,Replace,因此,我试图解析Java中包含(打开)方括号的字符串输入。我有str.replace(“\\[”,”),但这完全没有作用。我也尝试了replaceAll,使用了多个不同的正则表达式,但输出总是保持不变。我有一部分怀疑这是否可能是因为我的所有反斜杠字符都显示为日元符号(自从我在语言中添加日语以来),但这种情况已经有一年多了,以前从未给我带来过这样的问题 知道我在这里可能做错了什么吗?字符串在Java中是不可变的。请确保将返回值重新分配给相同的字符串变量: str = str.replaceAll(
str.replace(“\\[”,”)
,但这完全没有作用。我也尝试了replaceAll
,使用了多个不同的正则表达式,但输出总是保持不变。我有一部分怀疑这是否可能是因为我的所有反斜杠字符都显示为日元符号(自从我在语言中添加日语以来),但这种情况已经有一年多了,以前从未给我带来过这样的问题
知道我在这里可能做错了什么吗?字符串在Java中是不可变的。请确保将返回值重新分配给相同的
字符串
变量:
str = str.replaceAll("\\[", "");
对于正常的replace
方法,不需要退出括号:
str = str.replace("[", "");
和往常一样,问题不是“xxx不工作”,而是你不知道如何使用它 第一件事:
是不可变的;如果您阅读String
和.replace()
的javadoc,您将看到两者都指定返回一个新的.replaceAll()
实例String
接受字符串文字作为其第一个参数,而不是正则表达式文字replace()
str = str.replace("[", "");
如果你曾经这样做过:
str.replace("[", "");
然后将创建新实例,但忽略它
此外,这是
String
(另一个是.matches()
名称错误)的常见陷阱,尽管它们各自的名称不同,.replace()
会将第一个参数的所有引用替换为第二个参数;唯一的区别是.replaceAll()
接受regex作为第一个参数,接受“regex-aware”表达式作为第二个参数;有关详细信息,请参阅Matcher
的.replaceAll()
的javadoc
如上面的代码所示,replaceAll方法希望第一个参数是正则表达式,因此如果替换文本中存在要从字符串中替换的字符,则需要对“(”、“)”等字符进行转义。例如:
String oldString = "This is (stringTobeReplaced) with brackets.";
String newString = oldString.replaceAll("\\(stringTobeReplaced\\)", "");
System.out.println(newString); // will output "This is with brackets."
另一种方法是使用Pattern.quote(“str”):
这将考虑字符串作为文本替换。
它要工作,必须在方法内。 例如:public class AnyClass {
String str = "gtrg4\r\n" + "grtgy\r\n" + "grtht\r\n" + "htrjt\r\n" + "jtyjr\r\n" + "kytht";
public String getStringModified() {
str.replaceAll("\r\n", "");
return str;
}
}
是的,线索在返回类型uchuujin中:如果
replaceAll
返回字符串修改到位,为什么它会返回字符串;它不应该是void
?欢迎使用堆栈溢出。在回答一个有可接受答案的老问题之前(寻找绿色)✓) 和其他答案一样,确保你的答案添加了新的内容,或者与之相关的其他方面有所帮助。以下是一个关于这些内容的指南。
String newString = oldString.replaceAll(Pattern.quote("(stringTobeReplaced)"), "");
public class AnyClass {
String str = "gtrg4\r\n" + "grtgy\r\n" + "grtht\r\n" + "htrjt\r\n" + "jtyjr\r\n" + "kytht";
public String getStringModified() {
str.replaceAll("\r\n", "");
return str;
}
}