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如何將字串轉化為JSON(json-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陣列