話不多說(shuō),上代碼:
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
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
|
/** * @param value 指定的字符串 * @return 字符串的長(zhǎng)度 */ public static int length(String value) { int valueLength = 0 ; String chinese = "[\u0391-\uFFE5]" ; /* 獲取字段值的長(zhǎng)度,如果含中文字符,則每個(gè)中文字符長(zhǎng)度為2,否則為1 */ for (int i = 0; i < value.length(); i++) { /* 獲取一個(gè)字符 */ String temp = value.substring(i, i + 1); /* 判斷是否為中文字符 */ if (temp.matches(chinese)) { /* 中文字符長(zhǎng)度為2 */ valueLength += 2; } else { /* 其他字符長(zhǎng)度為1 */ valueLength += 1; } } return valueLength; } /** * 得到一個(gè)字符串的長(zhǎng)度,顯示的長(zhǎng)度,一個(gè)漢字或日韓文長(zhǎng)度為2,英文字符長(zhǎng)度為1 * @param String s 需要得到長(zhǎng)度的字符串 * @return int 得到的字符串長(zhǎng)度 */ public static int length(String s) { if (s == null) return 0; char[] c = s.toCharArray(); int len = 0; for (int i = 0; i < c.length; i++) { len++; if (!isLetter(c[i])) { len++; } } return len; } /** * 得到一個(gè)字符串的長(zhǎng)度,顯示的長(zhǎng)度,一個(gè)漢字或日韓文長(zhǎng)度為1,英文字符長(zhǎng)度為0.5 * @param String s 需要得到長(zhǎng)度的字符串 * @return int 得到的字符串長(zhǎng)度 */ public static double getLength(String s) { double valueLength = 0; String chinese = "[\u4e00-\u9fa5]"; // 獲取字段值的長(zhǎng)度,如果含中文字符,則每個(gè)中文字符長(zhǎng)度為2,否則為1 for (int i = 0; i < s.length(); i++) { // 獲取一個(gè)字符 String temp = s.substring(i, i + 1); // 判斷是否為中文字符 if (temp.matches(chinese)) { // 中文字符長(zhǎng)度為1 valueLength += 1; } else { // 其他字符長(zhǎng)度為0.5 valueLength += 0.5; } } //進(jìn)位取整 return Math.ceil(valueLength); } 根據(jù)長(zhǎng)度截取內(nèi)容,區(qū)分中英文: /** * 截取字符長(zhǎng)度,區(qū)分中英文 * * @param abc 字符串內(nèi)容 * @param len 截取長(zhǎng)度 * @return */ public static String subStr(String abc, int len) { if (TextUtils.isEmpty(abc) || len <= 0 ) return "" ; StringBuffer stringBuffer = new StringBuffer(); int sum = 0 ; char [] chars = abc.toCharArray(); for ( int i = 0 ; i < chars.length; i++) { if (sum >= (len * 3 )) { break ; } char bt = chars[i]; if (bt > 64 && bt < 123 ) { stringBuffer.append(String.valueOf(bt)); sum += 2 ; } else { stringBuffer.append(String.valueOf(bt)); sum += 3 ; } } return stringBuffer.toString(); } |
以上這篇java判斷中文字符串長(zhǎng)度的簡(jiǎn)單實(shí)例就是小編分享給大家的全部?jī)?nèi)容了,希望能給大家一個(gè)參考,也希望大家多多支持服務(wù)器之家。