2012-02-25 148 views
2

这只是我尝试完成的一个示例代码。Java replaceall忽略大小写和特殊字符

String s = "hello(1234aA)something"; 
String replaceString = "(1234aa)"; 
String s2 = s.replaceAll("(i?)" + replaceString, "something"); 

字符串s将是相同的,但在不同的情况下,这就是为什么我在的replaceAll(我?)使用。 我如何使正则表达式忽略特殊

+1

更换后s2应该是什么样子,在你看来? – 2012-02-25 11:48:10

+0

对替换字符串做了一点误会,我现在编辑了代码,但我仍然不会工作。 – Jonas 2012-02-25 11:54:09

+0

我找到了一种解决方法,在替换字符串的开头使用“\\ Q”,最后使用“\\ E”。 – Jonas 2012-02-25 12:02:26

回答

3

使用quote(),似乎你已经找到了忽略的情况,但你应该使用(?i),而不是(i?)。

String s = "hello(1234aA)something"; 
String replaceString = "(?i)" + Pattern.quote("(1234aa)"); 
String s2 = s.replaceAll(replaceString, "something"); 

这应该起作用。

+0

'quote()'方法在开始和结束时似乎没有比添加“\ Q”和“\ E”更多,但如果在API中专门为这种情况下,提问者已经走上了正确的轨道。 – 2012-02-25 12:41:44