Java如何替換第一個和最後一個字串
阿新 • • 發佈:2021-08-12
替換第一個和最後一個字串
1、測試類
package com.jeff.on; import com.alibaba.fastjson.JSONObject; public class JsonDemo1 { public static void main(String[] args) { String ret = "\"{\"successhttp://www.cppcns.com\":true,\"msg\http://www.cppcns.com":\"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 replaceWithThis) { return text.replaceFirst("(?s)" + strToReplace + "(?!.*?" + strToReplace + ")",replaceWithThis); } }
2、控制檯
java 只替換String字串中第一次出現的某個子串
問題現象:
今天在專案中遇到一個問題:如何替換一個String字串中第一次出現的某個子串.
問題分析:
從問題可知,這個String字串中應該含有多個該子串,然後這些子串是錯落分佈在這個String父串中的.
因此如果只是想要替換第一次出現的該子串的話,其實http://www.cppcns.com只需要呼叫String的replaceFirst()方法即可;
1.s.replaceFirst("正則表示式[被替換的子串]",替換後的子串);
但是呢,有一點需要注意的,就是這個方法的第一個引數是正則表示式,所以呼叫該方法的小夥伴記得先複習一下正則表示式的內容:
這裡提幾點:
- .匹配除換行符以外的任意字元
- ^匹配字串的開始
- $匹配字串的結束
- *重複零次或更多次
- +重複一次或更多次
- ?重複零次或一次
當然了,用到正則表示式總感覺挺麻煩的,其實這裡也可以用 \ 轉義字元來轉義從而消除正則表示式的限制.
除了替換第一次出現的子串之外,還有一些其他的替換方法:
2.s.replace("被替換的子串",替換後的子串);
s.replace()用於替換父串中所有被匹配的子串,這個方法不需要正則表示式,是很常用的字串替換方法
3.s.replaceAll("正則表示式[被替換的子串]",替換後的子串);
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.rhttp://www.cppcns.comeplace(".#","_"); 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"
以上為個人經驗,希望能給大家一個參考,也希望大家多多支援我們。