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, "剛滿(mǎn)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è)剛滿(mǎn)18歲的女生!
新字符緩存區(qū)中的長(zhǎng)度為:14
新字符緩存區(qū)中的容量為:24
總結(jié):
sb.insert(5, '小')是給在字符串sb的第6個(gè)字符前插入‘小'字;
sb.insert(5, "剛滿(mǎn)18歲的");是給在字符串sb的第6個(gè)字符前插入字符串"剛滿(mǎn)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)文章
Java中大數(shù)據(jù)推薦算法使用場(chǎng)景分析
在Java中實(shí)現(xiàn)大數(shù)據(jù)推薦算法時(shí),通常會(huì)使用一些開(kāi)源的機(jī)器學(xué)習(xí)庫(kù),如Apache Mahout、Weka、DL4J(DeepLearning4j,用于深度學(xué)習(xí))或者Spark MLlib(用于在Spark集群上運(yùn)行),這篇文章主要介紹了Java中可以用的大數(shù)據(jù)推薦算法,需要的朋友可以參考下2024-06-06
關(guān)于同一個(gè)service調(diào)用service本身的方法
這篇文章主要介紹了關(guān)于同一個(gè)service調(diào)用service本身的方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-06-06
MyBatis與Hibernate等ORM框架的區(qū)別及說(shuō)明
MyBatis和Hibernate是Java中流行的ORM框架,各有特點(diǎn):MyBatis采用半自動(dòng)SQL映射,提供細(xì)粒度的SQL控制,適合復(fù)雜查詢(xún)和性能優(yōu)化;Hibernate采用全自動(dòng)對(duì)象關(guān)系映射,提供較高的開(kāi)發(fā)效率,適合簡(jiǎn)單的CRUD操作,選擇哪種框架應(yīng)根據(jù)項(xiàng)目需求、團(tuán)隊(duì)技術(shù)棧和個(gè)人偏好來(lái)決定2025-03-03
Spring?Cloud?Eureka(全面解析)?大白話(huà)
這篇文章主要介紹了Spring?Cloud?Eureka(全面解析)?大白話(huà),具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-03-03
使用Java實(shí)現(xiàn)qq郵箱發(fā)送郵件
這篇文章主要為大家詳細(xì)介紹了使用Java實(shí)現(xiàn)qq郵箱發(fā)送郵件,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2010-05-05
Springboot Thymeleaf數(shù)字對(duì)象使用方法
這篇文章主要介紹了Springboot Thymeleaf數(shù)字對(duì)象使用方法,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2007-09-09
SpringBoot下使用定時(shí)任務(wù)的方式全揭秘(6種)
這篇文章主要介紹了SpringBoot下使用定時(shí)任務(wù)的方式全揭秘(6種),小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2019-02-02
MyBatisPlus中事務(wù)處理的實(shí)現(xiàn)
本文主要介紹了MyBatisPlus中事務(wù)處理的實(shí)現(xiàn),包括事務(wù)的開(kāi)啟、提交、回滾等操作,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2024-07-07
詳解Springboot如何通過(guò)注解實(shí)現(xiàn)接口防刷
本文主要為大家介紹一種極簡(jiǎn)潔、靈活通用接口防刷實(shí)現(xiàn)方式、通過(guò)在需要防刷的方法加上@Prevent?注解即可實(shí)現(xiàn)短信防刷,感興趣的可以了解一下2022-09-09

