欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

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

 更新時間:2021年08月11日 09:19:53   作者:知識追求者  
這篇文章主要介紹了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)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。

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

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

    這篇文章主要介紹了springboot日志文件名稱為什么叫l(wèi)ogback-spring.xml,本文給大家講解的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2023-08-08
  • Java多線程Thread , Future , Callable , FutureTask的使用

    Java多線程Thread , Future , Callable ,

    本文主要介紹了Java多線程Thread , Future , Callable , FutureTask的使用,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2023-03-03
  • idea新建mapper.xml文件詳細步驟如:mybatis-config

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

    這篇文章主要介紹了idea新建xml模板設(shè)置,例如:mybatis-config,本文分步驟通過圖文并茂的形式給大家介紹的非常詳細,需要的朋友可以參考下
    2023-07-07
  • 關(guān)于Spring中的三級緩存解析

    關(guān)于Spring中的三級緩存解析

    這篇文章主要介紹了關(guān)于Spring中的三級緩存,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-08-08
  • Java線程池由淺入深掌握到精通

    Java線程池由淺入深掌握到精通

    什么是線程池?很簡單,簡單看名字就知道是裝有線程的池子,我們可以把要執(zhí)行的多線程交給線程池來處理,和連接池的概念一樣,通過維護一定數(shù)量的線程池來達到多個線程的復用
    2021-09-09
  • Spring中如何獲取request的方法匯總及其線程安全性分析

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

    這篇文章主要給大家介紹了關(guān)于Spring中如何獲取request的方法匯總及其線程安全性分析的相關(guān)資料,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧。
    2018-04-04
  • Java的ConcurrentLinkedQueue源碼分析

    Java的ConcurrentLinkedQueue源碼分析

    這篇文章主要介紹了Java的ConcurrentLinkedQueue源碼分析,ConcurrentLinkedQueue 是一個基于鏈接節(jié)點的無界線程安全的隊列,當我們添加一個元素的時候,它會添加到隊列的尾部,當我們獲取一個元素時,它會返回隊列頭部的元素,需要的朋友可以參考下
    2023-12-12
  • java序列化與ObjectOutputStream和ObjectInputStream的實例詳解

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

    這篇文章主要介紹了java序列化與ObjectOutputStream和ObjectInputStream的實例詳解的相關(guān)資料,希望通過本文能幫助到大家,需要的朋友可以參考下
    2017-09-09
  • Spring Boot和Vue跨域請求問題原理解析

    Spring Boot和Vue跨域請求問題原理解析

    這篇文章主要介紹了Spring Boot和Vue跨域請求問題原理解析,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2019-12-12
  • 最新評論