插入字符代碼:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
|
public class Test { /**在原字符中插入新字符**/ public static void main(String[] args){ StringBuffer sb = new StringBuffer( "田田是一個女生!" ); //建立一個字符緩存區,緩存區中的內容為"田田是一個女生!" System.out.println( "原字符緩存區中的內容為:" +sb); //輸出原字符緩存區中的內容 System.out.println( "原字符緩存區中的長度為:" +sb.length() ); //長度 System.out.println( "原字符緩存區中的容量為:" +sb.capacity() ); //容量 sb.insert( 5 , '小' ); //給指定下標位置前的值賦新值 System.out.println( "新字符緩存區中的內容為:" +sb); //輸出新字符緩存區中的內容 System.out.println( "新字符緩存區中的長度為:" +sb.length() ); //長度 System.out.println( "新字符緩存區中的容量為:" +sb.capacity() ); //容量 } } |
解釋:sb.insert(5, ‘小');//給指定下標位置前的值賦新值,意思為在sb的第6個字符前插入‘小'字,5為字符緩存區下標的位置,和數組相同都是從0開始。
運行結果:
原字符緩存區中的內容為:田田是一個女生!
原字符緩存區中的長度為:8
原字符緩存區中的容量為:24
新字符緩存區中的內容為:田田是一個小女生!
新字符緩存區中的長度為:9
新字符緩存區中的容量為:24
/**********************************/ /**********************************/
插入字符串代碼:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
|
public class Test { /**在原字符中插入新字符**/ public static void main(String[] args){ StringBuffer sb = new StringBuffer( "田田是一個女生!" ); //建立一個字符緩存區,緩存區中的內容為"田田是一個女生!" System.out.println( "原字符緩存區中的內容為:" +sb); //輸出原字符緩存區中的內容 System.out.println( "原字符緩存區中的長度為:" +sb.length() ); //長度 System.out.println( "原字符緩存區中的容量為:" +sb.capacity() ); //容量 sb.insert( 5 , "剛滿18歲的" ); //給指定下標位置前的值賦一個字符串 System.out.println( "新字符緩存區中的內容為:" +sb); //輸出新字符緩存區中的內容 System.out.println( "新字符緩存區中的長度為:" +sb.length() ); //長度 System.out.println( "新字符緩存區中的容量為:" +sb.capacity() ); //容量 } } |
運行結果:
原字符緩存區中的內容為:田田是一個女生!
原字符緩存區中的長度為:8
原字符緩存區中的容量為:24
新字符緩存區中的內容為:田田是一個剛滿18歲的女生!
新字符緩存區中的長度為:14
新字符緩存區中的容量為:24
總結:
sb.insert(5, '小')是給在字符串sb的第6個字符前插入‘小'字;
sb.insert(5, "剛滿18歲的");是給在字符串sb的第6個字符前插入字符串"剛滿18歲的";
注意:字符用‘',字符串用""
補充知識:java格式化字符串,在指定位置插入指定字符串,兼容中英文以及特殊字符,例如:換行,用于解決生成pdf換行問題等問題
原因: 由于html轉pdf時,不能自動換行,因此才有下面的代碼.
注釋:完全模擬html頁面的自動換行!
最后的頁面展示效果:每一行的長度都一樣,看上去像<td></td>的自動換行一樣
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
|
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(); } /** * 兩個數字/英文 * * @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在原字符中插入新字符或字符串實例就是小編分享給大家的全部內容了,希望能給大家一個參考,也希望大家多多支持服務器之家。
原文鏈接:https://blog.csdn.net/weixin_44365021/article/details/85800555