java在原字符中插入新字符或字符串實(shí)例
插入字符代碼:
public class Test { /**在原字符中插入新字符**/ public static void main(String[] args){ StringBuffer sb = new StringBuffer("田田是一個(gè)女生!");//建立一個(gè)字符緩存區(qū),緩存區(qū)中的內(nèi)容為"田田是一個(gè)女生!" System.out.println("原字符緩存區(qū)中的內(nèi)容為:"+sb);//輸出原字符緩存區(qū)中的內(nèi)容 System.out.println("原字符緩存區(qū)中的長(zhǎng)度為:"+sb.length() );//長(zhǎng)度 System.out.println("原字符緩存區(qū)中的容量為:"+sb.capacity() );//容量 sb.insert(5, '小');//給指定下標(biāo)位置前的值賦新值 System.out.println("新字符緩存區(qū)中的內(nèi)容為:"+sb);//輸出新字符緩存區(qū)中的內(nèi)容 System.out.println("新字符緩存區(qū)中的長(zhǎng)度為:"+sb.length() );//長(zhǎng)度 System.out.println("新字符緩存區(qū)中的容量為:"+sb.capacity() );//容量 } }
解釋?zhuān)?/strong>sb.insert(5, ‘小');//給指定下標(biāo)位置前的值賦新值,意思為在sb的第6個(gè)字符前插入‘小'字,5為字符緩存區(qū)下標(biāo)的位置,和數(shù)組相同都是從0開(kāi)始。
運(yùn)行結(jié)果:
原字符緩存區(qū)中的內(nèi)容為:田田是一個(gè)女生!
原字符緩存區(qū)中的長(zhǎng)度為:8
原字符緩存區(qū)中的容量為:24
新字符緩存區(qū)中的內(nèi)容為:田田是一個(gè)小女生!
新字符緩存區(qū)中的長(zhǎng)度為:9
新字符緩存區(qū)中的容量為:24
/**********************************/ /**********************************/
插入字符串代碼:
public class Test { /**在原字符中插入新字符**/ public static void main(String[] args){ StringBuffer sb = new StringBuffer("田田是一個(gè)女生!");//建立一個(gè)字符緩存區(qū),緩存區(qū)中的內(nèi)容為"田田是一個(gè)女生!" System.out.println("原字符緩存區(qū)中的內(nèi)容為:"+sb);//輸出原字符緩存區(qū)中的內(nèi)容 System.out.println("原字符緩存區(qū)中的長(zhǎng)度為:"+sb.length() );//長(zhǎng)度 System.out.println("原字符緩存區(qū)中的容量為:"+sb.capacity() );//容量 sb.insert(5, "剛滿18歲的");//給指定下標(biāo)位置前的值賦一個(gè)字符串 System.out.println("新字符緩存區(qū)中的內(nèi)容為:"+sb);//輸出新字符緩存區(qū)中的內(nèi)容 System.out.println("新字符緩存區(qū)中的長(zhǎng)度為:"+sb.length() );//長(zhǎng)度 System.out.println("新字符緩存區(qū)中的容量為:"+sb.capacity() );//容量 } }
運(yùn)行結(jié)果:
原字符緩存區(qū)中的內(nèi)容為:田田是一個(gè)女生!
原字符緩存區(qū)中的長(zhǎng)度為:8
原字符緩存區(qū)中的容量為:24
新字符緩存區(qū)中的內(nèi)容為:田田是一個(gè)剛滿18歲的女生!
新字符緩存區(qū)中的長(zhǎng)度為:14
新字符緩存區(qū)中的容量為:24
總結(jié):
sb.insert(5, '小')是給在字符串sb的第6個(gè)字符前插入‘小'字;
sb.insert(5, "剛滿18歲的");是給在字符串sb的第6個(gè)字符前插入字符串"剛滿18歲的";
注意:字符用‘',字符串用""
補(bǔ)充知識(shí):java格式化字符串,在指定位置插入指定字符串,兼容中英文以及特殊字符,例如:換行,用于解決生成pdf換行問(wèn)題等問(wèn)題
原因: 由于html轉(zhuǎn)pdf時(shí),不能自動(dòng)換行,因此才有下面的代碼.
注釋:完全模擬html頁(yè)面的自動(dòng)換行!
最后的頁(yè)面展示效果:每一行的長(zhǎng)度都一樣,看上去像<td></td>的自動(dòng)換行一樣
package test; import java.io.UnsupportedEncodingException; /** * 解決pdf換行問(wèn)題,在指定位置插入指定字符串,兼容中英文以及特殊字符 * * @author xg君 * */ public class app { public static void main(String[] args) throws UnsupportedEncodingException { System.out.println(addStr(10, "<br/>", "as阿薩德dsa阿斯蒂芬fladadasdsjf阿斯蒂芬ljdsljkjlfdsklfd啥地方都是skljdsasfasdfads")); } /** * 插入方法 * * @param num * 每隔幾個(gè)字符插入一個(gè)字符串(中文字符) * @param splitStr * 待指定字符串 * @param str * 原字符串 * @return 插入指定字符串之后的字符串 * @throws UnsupportedEncodingException */ public static String addStr(int num, String splitStr, String str) throws UnsupportedEncodingException { StringBuffer sb = new StringBuffer(); String temp = str; int len = str.length(); while (len > 0) { int idx = getEndIndex(temp, num); sb.append(temp.substring(0, idx + 1)).append(splitStr); temp = temp.substring(idx + 1); len = temp.length(); } return sb.toString(); } /** * 兩個(gè)數(shù)字/英文 * * @param str * 字符串 * @param num * 每隔幾個(gè)字符插入一個(gè)字符串 * @return int 最終索引 * @throws UnsupportedEncodingException */ public static int getEndIndex(String str, double num) throws UnsupportedEncodingException { int idx = 0; double val = 0.00; // 判斷是否是英文/中文 for (int i = 0; i < str.length(); i++) { if (String.valueOf(str.charAt(i)).getBytes("UTF-8").length >= 3) { // 中文字符或符號(hào) val += 1.00; } else { // 英文字符或符號(hào) val += 0.50; } if (val >= num) { idx = i; if (val - num == 0.5) { idx = i - 1; } break; } } if (idx == 0) { idx = str.length() - 1; } return idx; } }
效果:
以上這篇java在原字符中插入新字符或字符串實(shí)例就是小編分享給大家的全部?jī)?nèi)容了,希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
Elasticsearch中store field與non-store field的區(qū)別說(shuō)明
這篇文章主要介紹了Elasticsearch中store field與non-store field的區(qū)別說(shuō)明,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2021-07-07Java數(shù)據(jù)庫(kù)存儲(chǔ)數(shù)組的方法小結(jié)
在現(xiàn)代軟件開(kāi)發(fā)中,數(shù)組是常用的數(shù)據(jù)結(jié)構(gòu)之一,然而,在關(guān)系數(shù)據(jù)庫(kù)中直接存儲(chǔ)數(shù)組并不是一個(gè)簡(jiǎn)單的任務(wù),本文將詳細(xì)介紹幾種在Java中將數(shù)組存儲(chǔ)到數(shù)據(jù)庫(kù)的方法,包括使用JPA、JSON、XML、以及關(guān)系型數(shù)據(jù)庫(kù)的數(shù)組類(lèi)型等,需要的朋友可以參考下2024-09-09關(guān)于Java中static關(guān)鍵字的用法
這篇文章主要介紹了關(guān)于Java中static關(guān)鍵字的用法,static:意為靜態(tài)的,在?Java?里面作為靜態(tài)修飾符,可以理解為全局的意思,static?不僅可以修飾成員變量,成員方法,還可以修飾代碼塊,需要的朋友可以參考下2023-08-08MybatisPlus關(guān)聯(lián)查詢(xún)的完美實(shí)現(xiàn)方案
我們?cè)陧?xiàng)目開(kāi)發(fā)的時(shí)候,難免會(huì)遇到連表查詢(xún)的操作,所以下面這篇文章主要給大家介紹了關(guān)于MybatisPlus關(guān)聯(lián)查詢(xún)的相關(guān)資料,文中通過(guò)實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下2021-12-12Java如何處理數(shù)據(jù)成為樹(shù)狀結(jié)構(gòu)
這篇文章主要介紹了Java如何處理數(shù)據(jù)成為樹(shù)狀結(jié)構(gòu)問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2024-07-07springboot讀取application.yml報(bào)錯(cuò)問(wèn)題及解決
這篇文章主要介紹了springboot讀取application.yml報(bào)錯(cuò)問(wèn)題及解決方案,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-06-06