如何擷取中英文本串不亂碼

2021-10-10 22:15:36 字數 1842 閱讀 4291

public

static

void

main

(string[

] args)

//二分查詢 適合一切特殊字元(gb2312或gbk都可)

public

static string subgb2312

(string source,

int target)

//全英文 乙個英文本母(不分大小寫)和標點 是乙個位元組

string charstr = source.

substring(0

, right);if

(charstr.

getbytes

("gb2312"

).length == target)

targetstr = source.

substring(0

, right /2)

;//中英混合

while

(targetstr.

getbytes

("gb2312"

).length != target)

else

if(targetstr.

getbytes

("gb2312"

).length > target)

/*else if (targetstr.getbytes("gb2312").length == target) */

if(left >= right || right - left ==1)

}if(targetstr.

getbytes

("gb2312"

).length > target)

}else

}catch

(unsupportedencodingexception e)

return targetstr;

}/**

* 如果字串過大,每次減減(或加加),效能能太低

* @param s

* @param num

* @return

*/public

static string sub

(string s,

int num)

catch

(unsupportedencodingexception e)

if(length > num)

return s;

}/**

* 按照目標長度去擷取含有中文的字串《按照給定的編碼格式》

* 最後一位會出現亂碼(乙個漢字被劈成了2半)

* arrays.copyofrange(sourcebyte, 0, target - 2);有坑

* @param source

* @param target 需要擷取的位置

* @return string

*/public

static string substringfix

(string source,

int target)

byte

sourcebyte = source.

getbytes

("gbk");

if(sourcebyte.length > target)

return result;

}else

}catch

(exception e)

}

subgb2312(): 差不奧xxcnubis那裡是身材好cu幣

sub(): 差不奧xxcnubis那裡是身材好cu幣

substringfix():差不奧xxcnubis那裡是身材好cu幣

中英文本串擷取

substringlength 每行限制文字數量 預設是20個字元 按照英文本元長度來計算,乙個中文字元相當於兩個英文本元 replacecharacter 超出字元代替樣式 預設是 擷取字元 string substring string strinput return resultstr rep...

PHP擷取中英文本串

php擷取gb2312中文字串 php擷取gb2312中文字串 param str 被擷取的字串 param start 起始長度 param len 擷取長度 param suffix 字尾字串 function gbk str str,start,len,suffix i else return...

PHP擷取中英文本串長度

我們經常會遇到需要擷取字串 含中文漢字 長度的情況,比如標題顯示不能超過多少字元,超出的長度用 表示,以下函式可以滿足你的需求。utf 8 gb2312都支援的漢字擷取函式 cut str 字串,擷取長度,開始長度,編碼 編碼預設為 utf 8 開始長度預設為 0 function cutstr s...