Java如何替換第一個和最后一個字符串
Java替換第一個和最后一個字符串
1、測試類
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); } }
2、控制臺
java 只替換String字符串中第一次出現(xiàn)的某個子串
問題現(xiàn)象:
今天在項目中遇到一個問題:如何替換一個String字符串中第一次出現(xiàn)的某個子串.
問題分析:
從問題可知,這個String字符串中應該含有多個該子串,然后這些子串是錯落分布在這個String父串中的.
因此如果只是想要替換第一次出現(xiàn)的該子串的話,其實只需要調(diào)用String的replaceFirst()方法即可;
1.s.replaceFirst("正則表達式[被替換的子串]",替換后的子串);
但是呢,有一點需要注意的,就是這個方法的第一個參數(shù)是正則表達式,所以調(diào)用該方法的小伙伴記得先復習一下正則表達式的內(nèi)容:
這里提幾點:
- .匹配除換行符以外的任意字符
- ^匹配字符串的開始
- $匹配字符串的結(jié)束
- *重復零次或更多次
- +重復一次或更多次
- ?重復零次或一次
當然了,用到正則表達式總感覺挺麻煩的,其實這里也可以用 \ 轉(zhuǎn)義字符來轉(zhuǎn)義從而消除正則表達式的限制.
除了替換第一次出現(xiàn)的子串之外,還有一些其他的替換方法:
2.s.replace("被替換的子串",替換后的子串);
s.replace()用于替換父串中所有被匹配的子串,這個方法不需要正則表達式,是很常用的字符串替換方法
3.s.replaceAll("正則表達式[被替換的子串]",替換后的子串);
s.replaceAll()這個方法和s.replace()的作用是一樣的,區(qū)別在于:首參數(shù)是正則表達式.
解決方法
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(".#", "_");
打印結(jié)果:
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"
以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關(guān)文章

springboot日志文件名稱叫l(wèi)ogback-spring.xml的原因解析

Java多線程Thread , Future , Callable ,

idea新建mapper.xml文件詳細步驟如:mybatis-config

Spring中如何獲取request的方法匯總及其線程安全性分析

Java的ConcurrentLinkedQueue源碼分析

java序列化與ObjectOutputStream和ObjectInputStream的實例詳解