浏览 4922 次
锁定老帖子 主题:当正则表达式碰上"$" 或"\"
精华帖 (0) :: 良好帖 (1) :: 新手帖 (18) :: 隐藏帖 (0)
|
|
---|---|
作者 | 正文 |
发表时间:2009-10-08
最后修改:2009-10-08
String.replaceFirst,Pattern.compile等等的时候,你得小心了。 你可能收到一个异常。 类似下面的url描述的bug: http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=6325596 http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=4689750 http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=6280695 至此,你要为Sun的Bug埋单。 如果你要处理的字符串将在页面显示,你可以把他进行 URL Encoding http://www.w3schools.com/TAGS/ref_urlencode.asp .然后再继续使用。 i.e. //replace all $ with %24; private static String convertDollar(String source) { StringBuffer result = new StringBuffer(); for(int index = 0; index < source.length(); index++) { result.append(source.charAt(index) == '$' ? "%24" : source.charAt(index)); } return result.toString(); } 声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
返回顶楼 | |
发表时间:2009-10-08
Java docs上已经说得很明白了:
引用 Note that backslashes (\) and dollar signs ($) in the replacement string may cause the results to be different than if it were being treated as a literal replacement string; see Matcher.replaceFirst(java.lang.String). Use Matcher.quoteReplacement(java.lang.String) to suppress the special meaning of these characters, if desired.
|
|
返回顶楼 | |
发表时间:2009-10-08
Eastsun 写道 Java docs上已经说得很明白了:
引用 Note that backslashes (\) and dollar signs ($) in the replacement string may cause the results to be different than if it were being treated as a literal replacement string; see Matcher.replaceFirst(java.lang.String). Use Matcher.quoteReplacement(java.lang.String) to suppress the special meaning of these characters, if desired. 你说的对。 但是还是要看jdk版本。 你看完那三个url也就明白那么回事。 |
|
返回顶楼 | |
发表时间:2009-10-09
跟Jdk的版本还真有关系啊,我用1.6.x的写了几行测试,哎?没出现楼主的异常
|
|
返回顶楼 | |
发表时间:2009-10-10
最后修改:2009-10-10
呵呵,用转义字符,再加上转义字符的转义字符。
|
|
返回顶楼 | |
发表时间:2009-10-10
sun该抄抄C#那个"@"号了吧
|
|
返回顶楼 | |
发表时间:2009-10-10
bdceo 写道 跟Jdk的版本还真有关系啊,我用1.6.x的写了几行测试,哎?没出现楼主的异常
还是有异常的 |
|
返回顶楼 | |
发表时间:2009-10-10
当你split();方法的时候也要注意。。要不人那结果真不是你想要的
|
|
返回顶楼 | |
发表时间:2009-10-10
最后修改:2009-10-10
ningmenglovesoft 写道 当你split();方法的时候也要注意。。要不人那结果真不是你想要的
贴出你的java 版本(java -version),和事例代码、异常栈 |
|
返回顶楼 | |
发表时间:2009-10-11
LZ是不是调用类似String.replaceAll(regex, replacement)的时候,replacement中包含'$'?
|
|
返回顶楼 | |