Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >Java替换指定字符串前后的指定字符(类似于String的trim()方法)

Java替换指定字符串前后的指定字符(类似于String的trim()方法)

作者头像
用户7886150
修改于 2021-04-06 02:17:17
修改于 2021-04-06 02:17:17
1.9K0
举报
文章被收录于专栏:bit哲学院bit哲学院

参考链接: Java字符串之-trim()

Java替换字符串前后的指定字符(类似于String的trim()方法) 

想到了替换字符串或者正则表达式,但是没想到怎么实现! 

看来平常得多看看源码!!! 

2种实现方法,第一种简单但不效率低,不推荐;第二种参考JDK的方法实现,高效,推荐。实现方法如下: 

方法1: 

用JDK自带的trim方法加replace方法: 

String str = "+++hello world+-,nihao!++++";

//传字符

System.out.println(str.replace('+',' ').trim().replace(' ', '+'));

//或传字符串

//System.out.println(str.replace("+"," ").trim().replace(" ", "+")); 

方法2: 

JDK自带的trim方法: 

public String trim() {

        int len = value.length;

        int st = 0;

        char[] val = value;

        while ((st < len) && (val[st] <= ' ')) {

            st++;

        }

        while ((st < len) && (val[len - 1] <= ' ')) {

            len--;

        }

        return ((st > 0) || (len < value.length)) ? substring(st, len) : this;

    } 

参考上面JDK自带的trim方法,实现如下: 

public static String custom_trim(String str, char c) {

        char[] chars = str.toCharArray();

        int len = chars.length;

        int st = 0;

        while ( (st < len) && (chars[st] == c) ){

            st ++;

        }

        while ( (st < len) && (chars[len-1] == c) ){

            len --;

        }

        return (st >0) && (len<chars.length)? str.substring(st, len): str;

    } 

扩展: 

JDK(1.7)的String类中没有ltrim()和rtrim()方法,现在实现如下: 

    public static String custom_ltrim(String str, char c) {

        char[] chars = str.toCharArray();

        int len = chars.length;

        int st = 0;

        while ( (st < len) && (chars[st] == c) ){

            st ++;

        }

        return (st >0)? str.substring(st, len): str;

    }

    public static String custom_rtrim(String str, char c) {

        char[] chars = str.toCharArray();

        int len = chars.length;

        int st = 0;

        while ( (st < len) && (chars[len-1] == c) ){

            len --;

        }

        return (len<chars.length)? str.substring(st, len): str;

    } 

完整实例如下: 

/**

 * 自定义字符串修剪方法

 * Created by ylchou@foxmail.com on 18/3/10.

 */

public class TrimDemo {

    public static void main(String[] args) {

        String str = "+++hello world+-,nihao!++++";

        System.out.println(str.replace('+',' ').trim().replace(' ', '+'));//hello+world+-,nihao!

        System.out.println(str.replace("+"," ").trim().replace(" ", "+"));//hello+world+-,nihao!

        System.out.println(custom_trim(str, '+'));//hello world+-,nihao!

        System.out.println(custom_ltrim(str, '+'));//hello world+-,nihao!++++

        System.out.println(custom_rtrim(str, '+'));//+++hello world+-,nihao!

    }

    /**

     * 去掉指定字符串前面和后面指定的字符

     * @param str

     * @param c

     * @return

     */

    public static String custom_trim(String str, char c) {

        char[] chars = str.toCharArray();

        int len = chars.length;

        int st = 0;

        while ( (st < len) && (chars[st] == c) ){

            st ++;

        }

        while ( (st < len) && (chars[len-1] == c) ){

            len --;

        }

        return (st >0) && (len<chars.length)? str.substring(st, len): str;

    }

    /**

     * 去掉指定字符串前面指定的字符

     * @param str

     * @param c

     * @return

     */

    public static String custom_ltrim(String str, char c) {

        char[] chars = str.toCharArray();

        int len = chars.length;

        int st = 0;

        while ( (st < len) && (chars[st] == c) ){

            st ++;

        }

        return (st >0)? str.substring(st, len): str;

    }

    /**

     * 去掉指定字符串后面指定的字符

     * @param str

     * @param c

     * @return

     */

    public static String custom_rtrim(String str, char c) {

        char[] chars = str.toCharArray();

        int len = chars.length;

        int st = 0;

        while ( (st < len) && (chars[len-1] == c) ){

            len --;

        }

        return (len<chars.length)? str.substring(st, len): str;

    }

}

本文系转载,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文系转载,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
字符串反转
题目:给定一字符串,实现反转,如“qwerty” 反转 成 “ytrewq” 代码演示: 第一种实现方式: // 字符串转成数组,然后数组倒序输出 private static void reserve(String str) { char[] chars = str.toCharArray(); for(int i=chars.length;i>0;i--) { System.out.print(chars[i-1]); } } 第二种实现方式: // 找出中间点,实现两边顺序互换 publi
呆呆
2021/10/07
6120
JAVA字符串反转
方法一:使用StringBuilder import java.util.Scanner; public class StrReversal { public static void main(String[] args) { Scanner scanner = new Scanner(System.in); String str = scanner.nextLine(); System.out.println(new StringBuilder(s
暖月寒星
2020/07/16
9750
【蓝桥杯Java_C组·从零开始卷】第四节(附)、字符串常用函数
导读 本文章将java中字符串常用的字符串进行罗列与对应demo的示例,帮助java初学者与蓝桥杯参赛的选手提升对JavaSE的理解。 目录 字符串由来 字符串转成byte数组 常用字符串函数列表: substring replace trim toCharArray toLowerCase与toUpperCase indexOf split 字符串由来 通过以下编码可以看出,字符串实际就是字符数组。 char chars[]={'a','b','c'}; String s=new String(char
红目香薰
2022/11/29
2330
【蓝桥杯Java_C组·从零开始卷】第四节(附)、字符串常用函数
备战第16届蓝桥杯——常用字符串函数
String str1= “abc”; 在编译期,JVM会去常量池来查找是否存在“abc”,如果不存在,就在常量池中开辟一个空间来存储“abc”;如果存在,就不用新开辟空间。然后在栈内存中开辟一个名字为str1的空间,来存储“abc”在常量池中的地址值。
红目香薰
2024/11/27
1070
备战第16届蓝桥杯——常用字符串函数
第十四届蓝桥杯集训——字符串函数(基础函数操作)
String str1= “abc”; 在编译期,JVM会去常量池来查找是否存在“abc”,如果不存在,就在常量池中开辟一个空间来存储“abc”;如果存在,就不用新开辟空间。然后在栈内存中开辟一个名字为str1的空间,来存储“abc”在常量池中的地址值。
红目香薰
2023/01/10
3140
第十四届蓝桥杯集训——字符串函数(基础函数操作)
日常开发中,String类中常用的方法
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
全栈程序员站长
2022/11/09
2560
【剑指Offer】58.2 左旋转字符串
先将 “abc” 和 “XYZdef” 分别翻转,得到 “cbafedZYX”,然后再把整个字符串翻转得到 “XYZdefabc”。
瑞新
2020/12/07
3720
把字符串转换成整数(java) 剑指offer
将一个字符串转换成一个整数(实现Integer.valueOf(string)的功能,但是string不符合数字要求时返回0),要求不能使用字符串转换整数的库函数。 数值为0或者字符串不是一个合法的数值则返回0.
用户7886150
2020/12/11
4650
左旋转字符串
先将 “abc” 和 “XYZdef” 分别翻转,得到 “cbafedZYX”,然后再把整个字符串翻转得到 “XYZdefabc”。
MickyInvQ
2021/12/07
1290
【背诵①】保姆级 | 零基础备赛蓝桥杯Java组| 字符串
4、使用 compareTo(String anotherString) 方法比较字符串的字典顺序:
命运之光
2024/04/15
1060
Java工具集-字符串(StringUtils)
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
cwl_java
2019/10/28
1.6K0
Java——String类常用方法总结,看这一篇就够啦(比较、查找、截取、替换、拆分、其他)
很多编程语言都会用字符数组描述字符串,Java也有类似概念,String类中有一系列字符相关的操作方法:
Winter_world
2020/09/25
5K0
Java——String类常用方法总结,看这一篇就够啦(比较、查找、截取、替换、拆分、其他)
Leetcode#344. Reverse String(反转字符串)
题目描述 编写一个函数,其作用是将输入的字符串反转过来。 示例 1: 输入: "hello" 输出: "olleh" 示例 2: 输入: "A man, a plan, a canal: Panama" 输出: "amanaP :lanac a ,nalp a ,nam A" 思路 思路一: 逆序拼接字符串 思路二: 依次交换两边的值 思路三: 直接调用StringBuilder 的 reverse() 思路四: 用栈来实现反转 代码实现 package String; import java.util.
武培轩
2018/09/28
4510
java翻转字符串几种方法
1.使用StringBuilder的reverse()方法String str = "12345";//1.使用StringBuilder类String reverse = new StringBuilder(str).reverse().toString();//reverse()方法的原理分析:public static void main(String[] args) { char [] value = "abcdef".toCharArray(); int n = value.lengt
在下是首席架构师
2022/08/18
4060
别在逻辑处理字符串了,String类的常用方法都有
在开发过程中像获取字符串长度、字符串截取、字符串转数组这样的方法我们常用会很熟悉,但是有很多实用方法我们并不了解。
余生大大
2022/11/02
6110
Java基础(十六):String的常用API
方法二思路:截取前中后三个字符串,中是需要反转的,从新拼接,拼接中字符串时候,从后开始拼接
冬天vs不冷
2025/01/21
790
Java基础(十六):String的常用API
【java概念】String的常用方法
1、length() 字符串的长度   例:char chars[]={'a','b'.'c'};     String s=new String(chars);     int len=s.length(); 2、charAt() 截取一个字符   例:char ch;     ch="abc".charAt(1); 返回'b' 3、 getChars() 截取多个字符   void getChars(int sourceStart,int sourceEnd,char target[],int ta
程序员互动联盟
2018/03/16
8880
String 类内置对象
int indexOf(int ch) 返回指定字符第一次出现的字符串内的索引。
软件小生活
2021/08/16
5970
java——String相关的方法汇总
通过intern()方法可以重复利用池中的对象,不需要重新申请一个空间,再次执行intern()方法,此时就会再池中查找内容相同的字符常量,如果在池中没有找到,就把当前字符串加到池中,如果已经找到了就返回这个池中的对象,节省了空间(但实际开发中很少遇到)
小雨的分享社区
2022/10/26
4620
java——String相关的方法汇总
Java之字符串String,StringBuffer,StringBuilder
String类: String类即字符串类型,并不是Java的基本数据类型,但可以像基本数据类型一样使用,用双引号括起来进行声明。在Java中用String类的构造方法来创建字符串变量。 声明字符串:声明一个字符串就是创建一个字符串对象。 //可以声明单个也可以同时声明多个字符串对象,声明不赋值,这个对象就是空, 也就是 String a= null; String a; String b,c; 创建字符串:给字符串赋值就是创建字符串的过程。 1.给字符串赋值的四种方法: (1).
二十三年蝉
2018/02/28
1.9K0
Java之字符串String,StringBuffer,StringBuilder
相关推荐
字符串反转
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档