Java字符串 模糊替换如:src="cc/ss.jpg"或src=“cc/sasw.jpg”或还有很多,要全部替换成src="11/1.jpg&
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Java字符串 模糊替换如:src="cc/ss.jpg"或src=“cc/sasw.jpg”或还有很多,要全部替换成src="11/1.jpg&相关的知识,希望对你有一定的参考价值。
public static void main(String[] args)String src="cc/ss.jpg";
String tihuan = src.replaceAll(src.substring(0,src.indexOf(".jpg")),"11/1");
System.out.println(tihuan);
追问
谢谢了!其实是这样的:String src="asdasdasdasdjnasdasdasd*******************src="cc/ss.jpg"*asdasdasfdasdfasfasd",
这个字符串很长。。并不知道
src=“cc/sasw.jpg”这段在哪个具体位置,该怎么写。。。
那就把这个字符串弄成一个数组,src[0]=cc/ss.jpg src[1]=aa/xx.jpg.....
参考技术A CTRL+F ,第一排写你要找的词,第二排写你要换成的东西。点击replace allJava:将 " 替换为 " 和 / 替换为 /
【中文标题】Java:将 \\" 替换为 " 和 \\/ 替换为 /【英文标题】:Java : Replace \" with " and \/ with /Java:将 \" 替换为 " 和 \/ 替换为 / 【发布时间】:2015-01-14 02:53:53 【问题描述】:我正在创建要发送到服务器的 json 字符串。我使用 Gson 生成 json 字符串。因为我的服务器不理解这样的字符串:\"key\":value
但"key":value
或"a\/b"
但a/b
。所以生成json字符串后,我使用replaceAll
方法来解决这个问题:
String res = original.replaceAll("\\/", "/").replaceAll("\\"", "\"");
但是这种方法并没有像我预期的那样奏效。请告诉我如何替换字符串以符合上述服务器。
谢谢:)
【问题讨论】:
【参考方案1】:-
你要匹配的内容:
\"
反斜杠是正则表达式特殊字符(用于转义),因此您需要转义它们:\\"
反斜杠也是字符串中的Java特殊字符(也用于转义),因此需要对其进行转义:\\\\"
在 Java 中也需要转义双引号(因为它是字符串文字分隔符):\\\\\"
你想用双引号代替,所以第4点需要再次应用:
.replaceAll("\\\\\"", "\"")
其他替换的逻辑相同(没有第 4 点,因为没有双引号):
.replaceAll("\\\\/", "/")
组合成一个单一的正则表达式:
.replaceAll("\\\\([\"/])", "$1")
【讨论】:
@hqt:这个答案比我的更优雅,请考虑接受它。 @TimPietzcker 是的。 spOOm 解决方案很优雅,但对新手来说不是那么直观,但他已经很好地解释了如何去最后一点。只是因为你先发帖了 :D 谢谢你通知我 :)【参考方案2】:尝试如下替换:
System.out.println("before " + json + " after " + json.replace("\\", ""));
输出是:
before String json = \"key\":valuea\/b"; after String json = "key":valuea/b";
【讨论】:
【参考方案3】:欢迎来到 Java 反斜杠地狱:
String res = original.replaceAll("\\\\\"", "\"").replaceAll("\\\\/", "/");
在正则表达式中,\\
匹配单个 \
字符,而在字符串(您从中构建正则表达式)中,您需要为每个文本 "\"
编写 "\\"
,因此您需要四个您希望通过正则表达式匹配的每个实际反斜杠的反斜杠。
如果 Java 有文字正则表达式类型(如 Ruby、Perl 或 JavaScript)或逐字字符串类型(如 C# 或 Python),那就太好了,但不幸的是,它没有。
【讨论】:
以上是关于Java字符串 模糊替换如:src="cc/ss.jpg"或src=“cc/sasw.jpg”或还有很多,要全部替换成src="11/1.jpg&的主要内容,如果未能解决你的问题,请参考以下文章