程序员人生 网站导航

按照指定显示长度切割字符串

栏目:综合技术时间:2015-03-03 08:26:44

这两天工作进程中处理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); }

测试结果:


------分隔线----------------------------
------分隔线----------------------------

最新技术推荐