String类中replaceAll方法不能替换美元符号$的问题解决
2013-03-23 14:22
344 查看
我现在有这样一个字符串
想把它里面的",$,"替换成"$",这样首先会想到replace方法,直接str.replace(",$,","$");就可以了,试了一下确实也是可行的。
后来我又想如果str中有多个",$,"需要替换,只要改成replaceAll应该是不成问题的,我试了一下将str改为:
这样却不生效了,一个都没有替换。
最后网上查了一下,改为:
就可以了。
代码str.replaceAll(a,b),如果b字符串中含有反斜杠 (/) 和美元符号 ($),则会抛出异常。
Matcher.quoteReplacement(",$,"), Matcher.quoteReplacement("$")
String str = "01,02,03,10,20,$,05,06|11";
想把它里面的",$,"替换成"$",这样首先会想到replace方法,直接str.replace(",$,","$");就可以了,试了一下确实也是可行的。
后来我又想如果str中有多个",$,"需要替换,只要改成replaceAll应该是不成问题的,我试了一下将str改为:
String str = "01,02,$,03,10,20,$,05,06|11"; str.replaceAll(",$,","$");
这样却不生效了,一个都没有替换。
最后网上查了一下,改为:
str.replaceAll( Matcher.quoteReplacement(",$,"), Matcher.quoteReplacement("$"))
就可以了。
代码str.replaceAll(a,b),如果b字符串中含有反斜杠 (/) 和美元符号 ($),则会抛出异常。
需要使用Matcher.quoteReplacement(java.lang.String)对字符串b进行处理,即:
str.replaceAll(a,Matcher.quoteReplacement(b))
以下为JDK1.6 API说明:
replaceAll public String replaceAll(String regex, String replacement)
使用给定的 replacement 替换此字符串所有匹配给定的正则表达式的子字符串。 调用此方法的 str.replaceAll(regex, repl) 形式与以下表达式产生的结果完全相同:
Pattern.compile(regex).matcher(str).replaceAll(repl) 注意,在替代字符串中使用反斜杠 (/) 和美元符号 ($) 与将其视为字面值替代字符串所得的结果可能不同;请参阅 Matcher.replaceAll。如有需要,可使用 Matcher.quoteReplacement(java.lang.String) 取消这些字符的特殊含义。
参数: regex - 用来匹配此字符串的正则表达式 replacement - 用来替换每个匹配项的字符串 返回: 所得 String 抛出: PatternSyntaxException - 如果正则表达式的语法无效 从以下版本开始: 1.4 另请参见: Pattern
Matcher.quoteReplacement(",$,"), Matcher.quoteReplacement("$")
相关文章推荐
- String类中replaceAll方法不能替换美元符号$的问题解决
- 解决replaceAll替换字符串中包括特殊符号时出现的问题
- Win7旗舰版系统还原按钮呈灰色不能使用问题的解决方法
- IE6不能修改NAME问题的解决方法
- 解决ajax方法内部不能给方法外部变量赋值的问题
- jQuery对象和DOM对象转换,解决jQuery对象不能使用js方法的问题
- 使用和众达仿真器CCS3.3.8环境调试出现tconf.exe不能工作问题解决方法
- mysql--出现中文乱码或不能输入中文问题的Windows或Linux系统解决方法
- SQLServer中bigint转int带符号时报错问题解决方法
- MMC不能打开文件SQL Server企业管理器问题解决方法
- 【转】彻底解决Android 应用方法数不能超过65K的问题
- Genymotion模拟器不能启动的若干问题及解决方法
- Java小程序---接口中抽象方法的实现(解决了JAVA语言不能多继承的问题)
- python中不能连接超时的问题及解决方法
- 恢复或重装系统后仍不能清除病毒木马问题解决方法
- IIS启用Gzip压缩造成OpenFlashChart不能正常显示问题及解决方法
- jQuery EasyUI动态添加控件或者ajax加载页面后不能自动渲染问题的解决方法
- 关于重装了codeblocks不能编译问题的解决方法
- 在Ubuntu下安装VMware Tools导致鼠标滚轮不能用的问题的解决方法