时间:2021-12-26 10:41:27 | 栏目:JAVA代码 | 点击:次
package com.jeff.json;
import com.alibaba.fastjson.JSONObject;
public class JsonDemo1 {
public static void main(String[] args) {
String ret = "\"{\"success\":true,\"msg\":\"success\",\"data\":{}}\"";
System.out.println(ret);
if (ret.startsWith("\"")) {
ret = replaceFirst(ret, "\"", "");
System.out.println("去除前引号:" + ret);
}
if (ret.endsWith("\"")) {
ret = replaceLast(ret, "\"", "");
System.out.println("去除后引号:" + ret);
}
JSONObject result = JSONObject.parseObject(ret);
System.out.println(result);
}
private static String replaceFirst(String ret, String strToReplace, String replaceWithThis) {
return ret.replaceFirst(strToReplace, replaceWithThis);
}
public static String replaceLast(String text, String strToReplace, String replaceWithThis) {
return text.replaceFirst("(?s)" + strToReplace + "(?!.*?" + strToReplace + ")", replaceWithThis);
}
}

今天在项目中遇到一个问题:如何替换一个String字符串中第一次出现的某个子串.
从问题可知,这个String字符串中应该含有多个该子串,然后这些子串是错落分布在这个String父串中的.
因此如果只是想要替换第一次出现的该子串的话,其实只需要调用String的replaceFirst()方法即可;
但是呢,有一点需要注意的,就是这个方法的第一个参数是正则表达式,所以调用该方法的小伙伴记得先复习一下正则表达式的内容:
这里提几点:
当然了,用到正则表达式总感觉挺麻烦的,其实这里也可以用 \ 转义字符来转义从而消除正则表达式的限制.
除了替换第一次出现的子串之外,还有一些其他的替换方法:
s.replace()用于替换父串中所有被匹配的子串,这个方法不需要正则表达式,是很常用的字符串替换方法
s.replaceAll()这个方法和s.replace()的作用是一样的,区别在于:首参数是正则表达式.
解决方法
String s = "#y*#test*#txt";
String s1 = s.replaceFirst("\\*#", "_");
String s1_2 = s.replaceFirst(".#", "_");
String s2 = s.replace("\\*#", "_");
String s2_2 = s.replace(".#", "_");
String s3 = s.replaceAll("\\*#", "_");
String s3_2 = s.replaceAll(".#", "_");
打印结果:
s1="#y_test*#txt"
s1_2="#y_test*#txt"
s2="#y*#test*#txt"
s2_2="#y*#test*#txt"
s3="#y_test_txt"
s3_2="#y_test_txt"