全部替换 "?" 用"\\?" 在Java中

Gui*_*ceU 10 java regex string

是否可以用"\?"替换所有问号("?")?

假设我有一个String,我想删除该String的某些部分,其中一部分包含一个URL.像这样:

String longstring = "..."; //This is the long String
String replacestring = "http://test.com/awesomeness.asp?page=27";
longstring.replaceAll(replacestring, "");
Run Code Online (Sandbox Code Playgroud)

但!据我所知,你不能将replaceAll()方法与包含一个单一问号的String一起使用,你必须使它们像这样"\?" 第一.

所以问题是; 有没有办法用"\?"替换问号 在一个字符串?不,我能够改变字符串.

在此先感谢,希望有人了解我!(抱歉英文不好......)

Boh*_*ian 21

不要使用replaceAll(),使用replace()!

这是一种常见的误解,它replaceAll()取代了所有事件,replace()只是替换了一个或者某个东西.这完全是错误的.

replaceAll()命名很差 - 它实际上取代了正则表达式.
replace()替换简单的字符串,这是你想要的.

两种方法都会替换目标的所有出现次数.

这样做:

longstring = longstring.replace(replacestring, "");
Run Code Online (Sandbox Code Playgroud)

这一切都会奏效.

  • +1'常见的误解'部分. (4认同)

Pea*_*oto 5

逃避\,使用\\\\?.

String longstring = "..."; //This is the long String
String replacestring = "http://test.com/awesomeness.asp?page=27";
longstring=longstring.replaceAll(replacestring, "\\\\?");
Run Code Online (Sandbox Code Playgroud)

但正如其他答案所提到的那样,replaceAll有点矫枉过正,只是replace应该有效.