1. 程式人生 > 程式設計 >Java如何替換第一個和最後一個字串

Java如何替換第一個和最後一個字串

替換第一個和最後一個字串

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"

以上為個人經驗,希望能給大家一個參考,也希望大家多多支援我們。