java判斷中文字符串長(zhǎng)度的簡(jiǎn)單實(shí)例
更新時(shí)間:2017年01月22日 09:41:37 投稿:jingxian
下面小編就為大家?guī)?lái)一篇java判斷中文字符串長(zhǎng)度的簡(jiǎn)單實(shí)例。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
話不多說(shuō),上代碼:
/**
* 獲取字符串的長(zhǎng)度,如果有中文,則每個(gè)中文字符計(jì)為2位
* @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è)參考,也希望大家多多支持腳本之家。
相關(guān)文章
SpringBoot整合mybatisplus和druid的示例詳解
這篇文章主要介紹了SpringBoot整合mybatisplus和druid的方法,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2023-08-08
javaweb用戶注銷后點(diǎn)擊瀏覽器返回刷新頁(yè)面重復(fù)登錄問(wèn)題的解決方法
這篇文章主要為大家詳細(xì)介紹了javaweb用戶注銷后點(diǎn)擊瀏覽器返回刷新頁(yè)面重復(fù)登錄問(wèn)題的解決方法,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2016-09-09
Java利用Socket和IO流實(shí)現(xiàn)文件的上傳與下載
本文主要介紹了Java利用Socket和IO流實(shí)現(xiàn)文件的上傳與下載,文中通過(guò)示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2022-04-04
Nacos配合SpringBoot實(shí)現(xiàn)動(dòng)態(tài)線程池的基本步驟
使用Nacos配合Spring Boot實(shí)現(xiàn)動(dòng)態(tài)線程池,可以讓你的應(yīng)用動(dòng)態(tài)地調(diào)整線程池參數(shù)而無(wú)需重啟,這對(duì)于需要高度可配置且需要適應(yīng)不同負(fù)載情況的應(yīng)用來(lái)說(shuō)非常有用,本文給大家介紹實(shí)現(xiàn)動(dòng)態(tài)線程池的基本步驟,需要的朋友可以參考下2024-02-02
Spring Boot 通過(guò)CORS實(shí)現(xiàn)跨域問(wèn)題
這篇文章主要介紹了Spring Boot 通過(guò)CORS實(shí)現(xiàn)跨域,本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2020-09-09

