按照指定顯示長度切割字符串
來源:程序員人生 發布時間:2015-03-03 08:26:44 閱讀次數:3911次
這兩天工作進程中處理TextView顯示文字的時候遇到1個需求,需要把字符串切割成等長的幾段,依照指定長度,過剩的換行顯示,因而做了以下小算法,寫下以記之!
public static String getChangedString(String inputString, int byteLength) {
char[] chars = inputString.toCharArray();
char[] workChars = new char[chars.length * 2];
// i為工作數組的角標,length為工作進程中長度,stringLength為字符實際長度,j為輸入字符角標
int i = 0, stringLength = 0;
float length = 0;
for (int j = 0; j < chars.length; i++, j++) {
// 如果源字符串中有換行符,此處要將工作進程中計算的長度清零
if (chars[j] == '
') {
length = 0;
}
try {
workChars[i] = chars[j];
//對漢字字符進行處理
if (new Character(chars[j]).toString().getBytes("GBK").length == 2 /*&& chars[j] != '”' && chars[j] != '“'*/) {
length++;
if (length >= byteLength) {
if (chars[j + 1] != '
') {
i++;
stringLength++;
workChars[i] = '
';
}
length = 0;
}
} else if (new Character(chars[j]).toString().getBytes("GBK").length == 1) {
//對空格何應為字符和數字進行處理。
if (chars[j] == ' ' ) {
length -= 0.5;
}else {
length += 0.05;
}
}
} catch (UnsupportedEncodingException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
stringLength++;
length++;
//長度超過給定的長度,插入
if (length >= byteLength) {
if (chars[j + 1] != '
') {
i++;
stringLength++;
workChars[i] = '
';
}
length = 0;
}
}
String outputString = new String(workChars).substring(0, stringLength)/* .trim() */;
System.out.println(outputString);
return outputString;
}
以下是測試代碼和測試結果:
public static void main(String[] args) {
// TODO Auto-generated method stub
String string =
" 盼望著,盼望著,東風來了,春季的腳步近了。
"
+ " 1 切都像剛睡醒的模樣,欣悵然張開了眼。山朗潤起來了,水漲起來了,太陽的酡顏起來了。
"
+ " 小草偷偷地從土里鉆出來,嫩嫩的,綠綠的。園子里,田野里,瞧去,1大片1大片滿是的。坐著,躺著,打兩個滾,踢幾腳球,賽幾趟跑,捉幾次迷藏。風輕悄悄的,草軟綿綿的。
"
+ "桃樹、杏樹、梨樹,你不讓我,我不讓你,都開滿了花趕趟兒。紅的像火,粉的像霞,白的像雪。花里帶著甜味兒;閉了眼,樹上恍如已滿是桃兒、杏兒、梨兒。花下成千成百的蜜蜂嗡嗡地鬧著"
+ ",大小的胡蝶飛來飛去。野花遍地是:雜樣兒,著名字的,沒名字的,散在草叢里,像眼睛,像星星,還眨呀眨的。
"
+ " “吹面不寒楊柳風”,不錯的,像母親的手撫摸著你。風里帶來些新翻的泥土的氣味,混著青草味兒,還有各種花的香,"
+ "都在微微潤濕的空氣里醞釀。鳥兒將巢安在繁花嫩葉當中,高興起來了,呼朋引伴地賣弄響亮的喉嚨,唱出宛轉的曲子,跟微風流水應和著。牛背上牧童的短笛,這時候候同樣成天嘹亮地響著。
"
+ " 雨是最尋常的,1下就是3兩天。可別惱。看,像牛毛,像花針,像細絲,密密地斜織著,人家屋頂上全籠著1層薄煙。樹葉兒卻綠得發亮,小草兒也青得逼你的眼。傍晚時候,上燈了,1點點黃暈的光,烘托出1片安靜而和平的夜。在鄉下,小路上,石橋邊,有撐起傘漸漸走著的人,地里還有工作的農民,披著蓑戴著笠。他們的房屋,稀稀疏疏的,在雨里靜默著。
"
+ " 天上風箏漸漸多了,地上孩子也多了。城里鄉下,家家戶戶,老老小小,也趕趟兒似的,1個個都出來了。舒活舒活筋骨,抖擻抖擻精神,各做各的1份事去。“1年之計在于春”,剛開端兒,有的是工夫,有的是希望。
"
+ " 春季像剛落地的娃娃,從頭到腳都是新的,它生長著。
"
+ " 春季像小姑娘,花枝招展的,笑著,走著。
"
+ " 春季像硬朗的青年,有鐵1般的胳膊和腰腳,領著我們上前去。
";
getChangedString(string, 60);
}
測試結果:

生活不易,碼農辛苦
如果您覺得本網站對您的學習有所幫助,可以手機掃描二維碼進行捐贈