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字符串中第一次出现的某个子串

问题现象:

今天在项目中遇到一个问题:如何替换一个String字符串中第一次出现的某个子串.

问题分析:

从问题可知,这个String字符串中应该含有多个该子串,然后这些子串是错落分布在这个String父串中的.

因此如果只是想要替换第一次出现的该子串的话,其实只需要调用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.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"

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • Java中Integer两种转int方法比较

    Java中Integer两种转int方法比较

    本文主要介绍了Java Integer两种转int方法比较。具有很好的参考价值,下面跟着小编一起来看下吧
    2017-02-02
  • Java Scoket实现双向通信代码详解

    Java Scoket实现双向通信代码详解

    这篇文章主要介绍了Java Scoket实现双向通信代码详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-06-06
  • SpringBoot集成Elasticsearch过程实例

    SpringBoot集成Elasticsearch过程实例

    这篇文章主要介绍了SpringBoot集成Elasticsearch过程实例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-04-04
  • Java后端Tomcat实现WebSocket实例教程

    Java后端Tomcat实现WebSocket实例教程

    WebSocket protocol 是HTML5一种新的协议。它实现了浏览器与服务器全双工通信(full-duplex)。一开始的握手需要借助HTTP请求完成握手。本文给大家介绍Java后端Tomcat实现WebSocket实例教程,感兴趣的朋友一起学习吧
    2016-05-05
  • java多线程实现文件下载功能

    java多线程实现文件下载功能

    这篇文章主要介绍了java多线程实现文件下载功能的相关资料,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-01-01
  • 基于Java Callable接口实现线程代码实例

    基于Java Callable接口实现线程代码实例

    这篇文章主要介绍了基于Java Callable接口实现线程代码实例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-08-08
  • java实现读取带合并单元格的Excel

    java实现读取带合并单元格的Excel

    这篇文章主要为大家详细介绍了java如何实现读取带合并单元格的Excel,文中的示例代码讲解详细, 感兴趣的小伙伴可以跟随小编一起学习一下
    2023-12-12
  • Spring 方法注解@Bean及配置类扫描路径

    Spring 方法注解@Bean及配置类扫描路径

    这篇文章主要介绍了Spring 方法注解@Bean及配置类扫描路径,本文通过实例代码给大家介绍的非常详细,感兴趣的朋友一起看看吧
    2024-12-12
  • Java项目NoProviderFoundException报错的解决方案

    Java项目NoProviderFoundException报错的解决方案

    在Java开发中,jakarta.validation.NoProviderFoundException 是一个令人困惑的运行时错误,常因校验框架依赖缺失或版本冲突导致,本文给大家介绍了Java项目NoProviderFoundException报错的解决方案,需要的朋友可以参考下
    2025-06-06
  • SpringBoot集成Redisson操作Redis的实现方法

    SpringBoot集成Redisson操作Redis的实现方法

    Redisson是一个用于Java的Redis客户端,它提供了在分布式环境下操作Redis数据库的简单、高效的方式,本文主要介绍了SpringBoot集成Redisson操作Redis的实现方法,具有一定的参考价值,感兴趣的可以了解一下
    2024-03-03

最新评论