1. 程式人生 > >Java替換指定字串前後的指定字元(類似於String的trim()方法)

Java替換指定字串前後的指定字元(類似於String的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 [email protected] 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;
    }
}

相關推薦

Java替換指定字串前後指定字元類似String的trim()方法

Java替換字串前後的指定字元(類似於String的trim()方法) 想到了替換字串或者正則表示式,但是沒想到怎麼實現! 看來平常得多看看原始碼!!! 2種實現方法,第一種簡單但不效率低,不推薦;第二種參考JDK的方法實現,高效,推薦。實現方法如下:

Java程序猿的JavaScript學習筆記9—— jQuery工具方法

article 順序 還要 並且 defined this ont property plain 計劃按例如以下順序完畢這篇筆記: Java程序猿的JavaScript學習筆記(1——理念) Java程序猿的JavaScript學習筆記(2——屬性

Java web之埠號被佔用兩種解決方法

當用eclipse開發Java web系統時,經常出現 8080埠被佔用,(windows) 解決辦法: 《一》                              1、windows==》輸入cmd,回車                            

簡單的切換頁面類似微信

stat urn ima http end elf int idt lis //在App.js中實現import React from ‘react‘; import { StyleSheet, Text, View } from ‘react-native‘; impo

spring cloud: Hystrix:feign的註解@FeignClient:fallbackFactory類似斷容器與fallback方法

fallbackFactory(類似於斷容器)與fallback方法 feign的註解@FeignClient:fallbackFactory與fallback方法不能同時使用,這個兩個方法其實都類似於Hystrix的功能,當網路不通時返回預設的配置資料. fallback方法的使用: 在入口檔案開

Linux:實現程序間的群聊類似聊天室

思路: 運用共享記憶體來儲存當前聊天的人數,訊息佇列來儲存訊息,執行緒來實現讀取。 先通過create.c來建立共享記憶體,並初始化 在chat.c中實現資訊的讀取,在主函式中將訊息寫進訊息佇列中,建立執行緒來實現訊息的讀取。   每執行一次chatc.c檔案,共享記憶

從C++中傳送多個數據類似結構體進入QML的listView中

首先,參照qt官方自帶的例項的,models and view:objectListmodel 下面貼出程式碼(在官方的例項中稍微修改下,使之符合我的要求), 首先是封裝一個Dataobject類,(將所需要的結構體的資料設定為類的屬性,使之在QML中可以很

c++中將資料儲存到.csv檔案中類似xsl表格

ofstream ofile; ofile.open("result.csv",ios::out | ios::trunc);       //判斷.csv檔案是否存在,不存在則建立 ofile<<"序號,第一列,第二列,第三列,第四列,第五列"<<

java指定字元賦值涉及StringBuffer字元快取類和setcharAt()方法

程式碼: public class Test { /**給指定的字元賦值**/ public static void main(String[] args){ StringBuffer sb = new StringBuffer(

VS程式設計,使用替換的方式,將程式碼中字串以某一字元以標誌常以逗號進行換行,分行顯示。相當按回車鍵

1、從一行,通過替換變成多行,相當於按回車  替換之前: 替換之後:   步驟:  1,選中要替換的程式碼 2、按ctrl + H 兩個鍵,調出替換視窗, 3、在替換視窗進行如下設定: 4、點選替換所有按鈕

指定字串刪除指定字元

#include <stdio.h> #include <stddef.h> /* * 從字串str中刪除指定的字元ch */ char* delete_special_c

獲取指定目錄下,指定副檔名的檔案包含子目錄中的,把這些檔案的絕對路徑寫入到一個文字檔案中。

題目: 獲取指定目錄下,指定副檔名的檔案(包含子目錄中的),把這些檔案的絕對路徑寫入到一個文字檔案中。 思路: 1.必須深度遍歷 2.要在遍歷的過程中進行過濾,將符合條件的內容儲存到容器中 3.對容器中的內容進行遍歷並將絕對路徑寫入到檔案中 程式碼: import java.io

java新手:字串陣列、字元陣列和字串之間的轉換

(1)字串和字元陣列的轉化 // 字串轉化成字元陣列 String str = "abcdefg"; char[] ch = str.toCharArray(); //輸出a System.out.println(ch[0]); //字元陣列

字串去除重複字元重複字元不保留

/**      * 去除重複字元(重複字元不保留)      * @param s 原始字串      * @return 去重後的字串      */     public static String remove(String s){         //字串拆分陣列

【leetcode】字串中的第一個唯一字元C、Python解答

題目: 字串中的第一個唯一字元 給定一個字串,找到它的第一個不重複的字元,並返回它的索引。如果不存在,則返回 -1。 案例: s = "leetcode" 返回 0. s = "lovelee

問:在指定的JSON資料中最外層是陣列根據指定條件拿到匹配到的結果

let carr = [{ "code": "000", "agyTypeCode": "1", "name": "某某市澤國區", "pid": null, "id": "21sadasdsa45dsadsa1w11ssdsw55wsd" }, { "cod

指定字串指定部分進行反轉 abcdefg-->abcgfed

public static String reverseString(String str,int start,int end){char [] ch = str.toCharArray();//字串-->字元陣列return reverseArray(ch,star

Java如何將字串轉化為JSONjson-lib

前言: 關於如何轉換網上的文章已經很多了,我之所以還寫出來的主要目的是提供一下jar。很多博主只是提供json-lib包,其他依賴的包讓自己去下載,自己在這裡遇到一些坑就是,如果版本不一致會導致報錯。另外有些博主為了賺取積分,讓我這種學生黨有些無奈。因此就在這

java 替換json字串中間的引號保留兩邊的引號,避免json校驗失敗

問題描述 解析爬取的json資料時,報如下錯誤: com.alibaba.fastjson.JSONException: syntax error, position at 4164, name mc at com.alibaba.fastjso

java 字串轉化為字元陣列的3種方法

你可以選擇最簡單的方法解題,但是你需要掌握所有的方法當做知識儲備 第一種最簡單,但是其適用前提是輸入:   4(個數)     然後是   1  2  3  4  (也就是輸入數字),放入kk陣列