精华内容
下载资源
问答
  • 按照指定显示长度分割字符串

    千次阅读 2015-01-14 17:46:09
    这两天工作过程中处理TextView显示文字的时候遇到一个需求,需要把字符串切割成等长的几段,按照指定长度,多余的换行显示,于是做了以下小算法,写下以记之!

    这两天工作过程中处理TextView显示文字的时候遇到一个需求,需要把字符串切割成等长的几段,按照指定长度,多余的换行显示,于是做了以下小算法,写下以记之!

     
    	/**
    	 * 处理输入的字符串,将字符串分割成以byteLength为宽度的多行字符串。
    	 * 根据需要,英文字符的空格长度为0.5,汉字的长度为2(GBK编码下,UTF-8下为3),数字英文字母宽度为1.05。
    	 * @param inputString 输入字符串
    	 * @param byteLength 以byteLength的长度进行分割(一行显示多宽)
    	 * @return 处理过的字符串
    	 */
    	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] == '\n') {
    				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] != '\n') {
    							i++;
    							stringLength++;
    							workChars[i] = '\n';
    						}
    							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++;
    			//长度超过给定的长度,插入\n
    			if (length >= byteLength) {
    				if (chars[j + 1] != '\n') {
    					i++;
    					stringLength++;
    					workChars[i] = '\n';
    				}
    				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 = 
    				  "        盼望着,盼望着,东风来了,春天的脚步近了。\n"
    				+ "        一 切都像刚睡醒的样子,欣欣然张开了眼。山朗润起来了,水涨起来了,太阳的脸红起来了。\n"
    				+ "        小草偷偷地从土里钻出来,嫩嫩的,绿绿的。园子里,田野里,瞧去,一大片一大片满是的。坐着,躺着,打两个滚,踢几脚球,赛几趟跑,捉几回迷藏。风轻悄悄的,草软绵绵的。\n"
    				+ "桃树、杏树、梨树,你不让我,我不让你,都开满了花赶趟儿。红的像火,粉的像霞,白的像雪。花里带着甜味儿;闭了眼,树上仿佛已经满是桃儿、杏儿、梨儿。花下成千成百的蜜蜂嗡嗡地闹着"
    				+ ",大小的蝴蝶飞来飞去。野花遍地是:杂样儿,有名字的,没名字的,散在草丛里,像眼睛,像星星,还眨呀眨的。\n"
    				+  "    “吹面不寒杨柳风”,不错的,像母亲的手抚摸着你。风里带来些新翻的泥土的气息,混着青草味儿,还有各种花的香,"
    				+ "都在微微润湿的空气里酝酿。鸟儿将巢安在繁花嫩叶当中,高兴起来了,呼朋引伴地卖弄清脆的喉咙,唱出宛转的曲子,跟轻风流水应和着。牛背上牧童的短笛,这时候也成天嘹亮地响着。\n"
    				+ "        雨是最寻常的,一下就是三两天。可别恼。看,像牛毛,像花针,像细丝,密密地斜织着,人家屋顶上全笼着一层薄烟。树叶儿却绿得发亮,小草儿也青得逼你的眼。傍晚时候,上灯了,一点点黄晕的光,烘托出一片安静而和平的夜。在乡下,小路上,石桥边,有撑起伞慢慢走着的人,地里还有工作的农民,披着蓑戴着笠。他们的房屋,稀稀疏疏的,在雨里静默着。\n"
    				+ "        天上风筝渐渐多了,地上孩子也多了。城里乡下,家家户户,老老小小,也赶趟儿似的,一个个都出来了。舒活舒活筋骨,抖擞抖擞精神,各做各的一份事去。“一年之计在于春”,刚起头儿,有的是工夫,有的是希望。\n\n"
    				+ "        春天像刚落地的娃娃,从头到脚都是新的,它生长着。\n"
    				+ "        春天像小姑娘,花枝招展的,笑着,走着。\n"
    				+ "        春天像健壮的青年,有铁一般的胳膊和腰脚,领着我们上前去。\n";
    		getChangedString(string, 60);
    	}

    测试结果:


    展开全文
  • JAVA工具类-按固定长度分割字符串

    千次阅读 2016-09-20 11:14:37
    分析说明:在遍历text....1.新字符串存放2.容量处理public static ArrayList<String> splitByBytes(String text, int length) throws UnsupportedEncodingException { String encode="GBK"; if

    此篇尝试将字符串按固定长度分割返回List

    
        private void run11() throws Exception {
    
            //测试开始
            ArrayList b=splitByBytes("abcdefghijk",3);
    
            //结果
            //[abc, def, ghi, jk]
    
        }
    
        //功能:按固定长度来分割字符串 chenst
        public ArrayList<String> splitByBytes(String text, int length)
                throws UnsupportedEncodingException {
    
         String encode="GBK";
            if (text == null) {
                return null;
            }
            ArrayList<String> list=new ArrayList<String>();
            StringBuilder sb = new StringBuilder();
            int currentLength = 0;
            for (int i=0;i<text.toCharArray().length;i++)
            {
                char c=text.charAt(i);
                currentLength += String.valueOf(c).getBytes(encode).length;
                if ( currentLength <= length) {
                    sb.append(c);
                } else {
                    currentLength=0;
                    currentLength += String.valueOf(c).getBytes(encode).length;
                    list.add(sb.toString());
                    sb.replace(0,sb.length(),"");
                    sb.append(c);
                }
                if(i==text.toCharArray().length-1)
                    list.add(sb.toString());
            }
            return list;
        }

    实现要点回顾:

    在遍历text.toCharArray()中解决:
    1.新字符串存放
    2.容量处理

    可能用到的场景:

    暂时想不到,这个函数有啥用?

    展开全文
  • java String中文字符串分割成一定长度字符串数组 /** * 几个字一组 变量控制 大于零有意义 */ int num = 6; /** * 待操作的字符串 */ String str = "一二三四五六七一二三四五六七一二三四五六七一二三...

    java String中文字符串分割成一定长度的字符串数组

    /**
     * 几个字一组 变量控制 大于零有意义
     */
    int num = 6;
    /**
     * 待操作的字符串
     */
    String str = "一二三四五六七一二三四五六七一二三四五六七一二三四五六七一二三四五六七一二三四五六七一二三四五六七一二三四五六七";
    /**
     * 可以分为几行
     */
    int lines = (str.length() + (num - 1)) / num;
    /**
     * 中间行
     */
    int center = ((lines + 1) / 2);
    System.out.println("长度:" + str.length());
    System.out.println("可以分为:" + lines + "行");
    /**
     * 转成数组
     */
    char[] chars = str.toCharArray();
    /**
     * 计数
     */
    int j = 0;
    /**
     * 开始加工
     */
    for (int i = 0; i < chars.length; i += num) {
        j++;
        System.out.print("中间行=" + center + "当前行:" + j);
        String s1 = String.valueOf(chars[i]);
        for (int k = 1; k <= num - 1; k++) {
            if (i + k < chars.length)
                s1 = s1.concat(String.valueOf(chars[i + k]));
        }
        //标示中间行
        if (j == center) {
            System.out.print("--->");
        }
        //打印结果 或者用String[] 来接 在循环外返回一个数组出去
        System.out.println(s1);
    
    }

    展开全文
  • //获取整个字符串可以被切割成字符子串的个数 String[] split = new String[n]; for (int i = 0; i ; i++) { if (i (n - 1)) { split[i] = src.substring(i * length, (i + 1) * length); } else { split[i] = src....
     public static String[] stringToStringArray(String src, int length) {
            //检查参数是否合法
            if (null == src || src.equals("")) {
                return null;
            }
    
            if (length <= 0) {
                return null;
            }
            int n = (src.length() + length - 1) / length; //获取整个字符串可以被切割成字符子串的个数
            String[] split = new String[n];
            for (int i = 0; i < n; i++) {
                if (i < (n - 1)) {
                    split[i] = src.substring(i * length, (i + 1) * length);
                } else {
                    split[i] = src.substring(i * length);
                }
            }
            return split;
        }

     

    展开全文
  • 中文在不同编码中占用的字节数是不同的,GBK编码中,一个汉字占两个字节...如果我们按照字节数来截取带中文的字符串,就有可能截取了半个或者三分之一个汉字,导致乱码的出现。 [code="java"] package c...
  • import java.util.ArrayList;import java.util.List;public class Test { public static void main(String[] args) { // TODO Auto-generated method stub String s = "1234567"; List&lt;String&...
  • public class 分离字符串和输出string数组 { public static void main(String[] args) { // 假设有一串字符串 96558&amp;JQKA String asd = "96528&amp;JQKA"; // 想让它以&amp;...
  • Java字符串按指定长度分割

    千次阅读 2019-06-20 16:35:33
    用于将大量字符串按指定长度分割,返回List 转载地址:https://www.cnblogs.com/ljtletters/p/7109875.html?utm_source=itdadao&utm_medium=referral /** * 把原始字符串分割成指定长度的字符串列表 * * @...
  • 字符串、数组和集合如何获取长度问题? 字符串获取长度用的是length() 数组获取长度使用的是length 泛型集合集合获取元素个数使用的是size() split()方法 可以很清楚的看出方法的返回值为一个数组 再来看上面的...
  • java分割字符串

    2014-12-03 10:24:50
    java分割字符串使用是String类的静态方法split方法,例如: @org.junit.Test public void splitTest(){ String str = "aaa,bbb,ccc"; String[] strs = str.split(","); System.out.println(strs.length); ...
  • java按字节分割字符串

    2020-11-16 14:21:03
    按字节分割字符串 后台数据库有时不能使用CLOB存储数据的时候,需要将前台传递的字符串分割为更小的字符串存到多个字段中,这时如果使用substring的话,字符串中的中文情况下,由于数据库字符类型存储字节数的限制,...
  • 并且将丢弃尾部空字符串 。    [java]   view plain   copy class  T {      public   static   void  main(String args[]) {     String num[] =  new  String[ 11 ];     String sLine ...
  • java 字符串分割

    2012-10-20 22:40:40
    java 字符串分割 代码 输入一字符串(长度小于100),10个字符一组分割存入新的数组,倒序输出。
  • 按照一定长度分割字符串并返回数组
  • 在使用java中的split按照“\t”,拆分字符串的时候,发现如果最后的几个字段是空,只是用\t分割,是连着的\t的话,就不会被分割,如 “d\tc\te\t\t\t”最后的几个\t就不会被分割,应该是在拆分之前对字符串进行了...
  • 由于自学java过程中碰到了关于split()方法的一些”奇怪“之处,花费了好大的时间和精力才搞定,看了看网上的资源也很少有关于分割后数组长度的帖子,所以为了积累也为了给广大学者们提个醒,不要再入坑了,不多说了,...
  • !... 代码如下 ``` System.out.println(workStrs[1]);... System.out.println("***********************************************************************... System.out.println("索引0长度:"+s2[0].length()); ```
  • /** * 把原始字符串分割成指定长度字符串列表 * * @param inputString * 原始字符串 * @param length * 指定长度 * @return */ public static List&...
  • Java使用String对象的split()方法分割字符串

    万次阅读 多人点赞 2018-01-14 19:58:29
    Java中,按某个字符分割字符串使用的是String对象的split()方法,返回的是分割之后的String数组,值得注意的是分割符。当分割符是 . 或者是 | 时,必须使用 \\ 进行转义。 没有加转义符按 . 分割字符串,返回值是一...
  • public int indexOf(int ch ) :返回指定字符在字符串中第一次出现处的索引,如果此字符串中没有这样的字符,则返回 -1。 或 public int indexOf(int ch, int fromIndex) :返回从 fromIndex 位置开始查找指定字符在...
  • 调用: zckbgdTable.setValue("NOTES", getSubStr(bill.getNoteS(),250,1));//100 0 备注 //up 调用SAP 出口报关单 函数:ZRFC_TRANSEXPORTCUSTOMDECLARE public static String[] str_split(String str, int ...
  • 前面介绍了处理字符串的常用方法,还有一种分割字符串的场景也很常见,也就是按照某个规则将字符串切割为若干子串。分割规则通常是指定某个分隔符,根据字符串内部的分隔符将字符串进行分割,例如逗号、空格等等都...
  • 多个分割点分割字符串

    千次阅读 2017-12-04 08:46:39
    多个分割点分割字符串,多个正则式分割字符串
  • Java分割字符串(spilt())

    千次阅读 2019-07-03 20:04:43
    String 类的 split() 方法可以按指定的分割符对目标字符串进行分割分割后的内容存放在字符串数组中。该方法主要有如下两种重载形式: str.split(String sign) str.split(String sign,int limit) 其中,str ...
  • 这个参数并不是一个简单的分割用的字符,而是一个正则表达式,它对一些特殊的字符可能会出现你预想不到的结果,所以这里列举一些在使用split方法分割字符串时要传入的一些特殊字符串。 基本用法: (1)...
  • java 正则表达式和split分割字符串

    千次阅读 2018-11-30 17:28:29
    原本我以为通过数字分割字符串,string数组的长度应该是2,而且数组里面应该只有“,” ,但运行结果却是这样子的: 数组的长度是5,原来分割的时候从第0位开始,如果不符合条件,就储存空,直到符合条件才在对应...
  • 提到分割字符串大家很容易xiang'da

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 57,003
精华内容 22,801
关键字:

java按照长度分割字符串

java 订阅