java在原字符中插入新字符或字符串實例
插入字符代碼:
public class Test {
/**在原字符中插入新字符**/
public static void main(String[] args){
StringBuffer sb = new StringBuffer("田田是一個女生!");//建立一個字符緩存區(qū),緩存區(qū)中的內容為"田田是一個女生!"
System.out.println("原字符緩存區(qū)中的內容為:"+sb);//輸出原字符緩存區(qū)中的內容
System.out.println("原字符緩存區(qū)中的長度為:"+sb.length() );//長度
System.out.println("原字符緩存區(qū)中的容量為:"+sb.capacity() );//容量
sb.insert(5, '小');//給指定下標位置前的值賦新值
System.out.println("新字符緩存區(qū)中的內容為:"+sb);//輸出新字符緩存區(qū)中的內容
System.out.println("新字符緩存區(qū)中的長度為:"+sb.length() );//長度
System.out.println("新字符緩存區(qū)中的容量為:"+sb.capacity() );//容量
}
}
解釋:sb.insert(5, ‘小');//給指定下標位置前的值賦新值,意思為在sb的第6個字符前插入‘小'字,5為字符緩存區(qū)下標的位置,和數(shù)組相同都是從0開始。
運行結果:
原字符緩存區(qū)中的內容為:田田是一個女生!
原字符緩存區(qū)中的長度為:8
原字符緩存區(qū)中的容量為:24
新字符緩存區(qū)中的內容為:田田是一個小女生!
新字符緩存區(qū)中的長度為:9
新字符緩存區(qū)中的容量為:24
/**********************************/ /**********************************/
插入字符串代碼:
public class Test {
/**在原字符中插入新字符**/
public static void main(String[] args){
StringBuffer sb = new StringBuffer("田田是一個女生!");//建立一個字符緩存區(qū),緩存區(qū)中的內容為"田田是一個女生!"
System.out.println("原字符緩存區(qū)中的內容為:"+sb);//輸出原字符緩存區(qū)中的內容
System.out.println("原字符緩存區(qū)中的長度為:"+sb.length() );//長度
System.out.println("原字符緩存區(qū)中的容量為:"+sb.capacity() );//容量
sb.insert(5, "剛滿18歲的");//給指定下標位置前的值賦一個字符串
System.out.println("新字符緩存區(qū)中的內容為:"+sb);//輸出新字符緩存區(qū)中的內容
System.out.println("新字符緩存區(qū)中的長度為:"+sb.length() );//長度
System.out.println("新字符緩存區(qū)中的容量為:"+sb.capacity() );//容量
}
}
運行結果:
原字符緩存區(qū)中的內容為:田田是一個女生!
原字符緩存區(qū)中的長度為:8
原字符緩存區(qū)中的容量為:24
新字符緩存區(qū)中的內容為:田田是一個剛滿18歲的女生!
新字符緩存區(qū)中的長度為:14
新字符緩存區(qū)中的容量為:24
總結:
sb.insert(5, '小')是給在字符串sb的第6個字符前插入‘小'字;
sb.insert(5, "剛滿18歲的");是給在字符串sb的第6個字符前插入字符串"剛滿18歲的";
注意:字符用‘',字符串用""
補充知識:java格式化字符串,在指定位置插入指定字符串,兼容中英文以及特殊字符,例如:換行,用于解決生成pdf換行問題等問題
原因: 由于html轉pdf時,不能自動換行,因此才有下面的代碼.
注釋:完全模擬html頁面的自動換行!
最后的頁面展示效果:每一行的長度都一樣,看上去像<td></td>的自動換行一樣
package test;
import java.io.UnsupportedEncodingException;
/**
* 解決pdf換行問題,在指定位置插入指定字符串,兼容中英文以及特殊字符
*
* @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
* 每隔幾個字符插入一個字符串(中文字符)
* @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();
}
/**
* 兩個數(shù)字/英文
*
* @param str
* 字符串
* @param num
* 每隔幾個字符插入一個字符串
* @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) {
// 中文字符或符號
val += 1.00;
} else {
// 英文字符或符號
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在原字符中插入新字符或字符串實例就是小編分享給大家的全部內容了,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關文章
Elasticsearch中store field與non-store field的區(qū)別說明
這篇文章主要介紹了Elasticsearch中store field與non-store field的區(qū)別說明,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2021-07-07
Java數(shù)據(jù)庫存儲數(shù)組的方法小結
在現(xiàn)代軟件開發(fā)中,數(shù)組是常用的數(shù)據(jù)結構之一,然而,在關系數(shù)據(jù)庫中直接存儲數(shù)組并不是一個簡單的任務,本文將詳細介紹幾種在Java中將數(shù)組存儲到數(shù)據(jù)庫的方法,包括使用JPA、JSON、XML、以及關系型數(shù)據(jù)庫的數(shù)組類型等,需要的朋友可以參考下2024-09-09
MybatisPlus關聯(lián)查詢的完美實現(xiàn)方案
我們在項目開發(fā)的時候,難免會遇到連表查詢的操作,所以下面這篇文章主要給大家介紹了關于MybatisPlus關聯(lián)查詢的相關資料,文中通過實例代碼介紹的非常詳細,需要的朋友可以參考下2021-12-12
springboot讀取application.yml報錯問題及解決
這篇文章主要介紹了springboot讀取application.yml報錯問題及解決方案,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2022-06-06

