问答雕虫2

问题:
输入一串字符串,比如asdsaf asdasda dasdasda asdasdad dsafsadsa asfaqeqe saddadas。
然后输入一个数字让字符串按输入的数字自动换行,比如输入字符串20,则输出为:
asdsaf asdasda dasda
sda asdasdad dsafsad
sa asfaqeqe saddadas
该函数的返回值为预处理后的文本。预处理后的文本为每一节,及其所在的行号。中间以分号隔开。若一个节跨越了多行,则行号用逗号隔开,并从小到大进行排列。
比如以上结果就为:asdsaf【1】; 【1】,asdasda【1】; 【1】,dasdasda【1,2】; 【2】;
asdasdad【2】; 【2】; dsafsadsa【2,3】; 【3】; asfaqeqe【3】; 【3】; saddadas

解答:


   public static void main(String[] args)
   {
       String input = "asdsaf asdasda dasdasda asdasdad dsafsadsa asfaqeqe saddadas";
       int lenth = 20;

       // 多个空格替换为1个之后trim
       input = input.replaceAll(" +", " ").trim();

       String pre = input.replace(" ", "(%s);(%s);");
       System.out.println(input);
       System.out.println(pre);

       // 切分为数组
       String[] inputArr = input.split(" ");
       // 空格数量
       int count = inputArr.length - 1;

       int pos = 0;
       int start;
       int end;
       String startShow;
       String endShow;

       List<String> replace = new ArrayList<String>();
       for (String arr : inputArr)
       {
           start = pos / lenth + 1;
           pos = pos + arr.length();
           end = pos / lenth + 1;

           // 空格长度为1
           pos++;
           if (start == end)
           {
               startShow = start + "";
               endShow = end + "";
           }
           else
           {
               startShow = start + "," + end;
               endShow = end + "";
           }
           // 打印原始数组字符以及待替换数据
           System.out.println(String.format("%s   %s to %s", arr, startShow, endShow));
           if (replace.size() < count * 2)
           {
               replace.add(startShow);
               replace.add(endShow);
           }
       }
       // 打印最后结果
       System.out.println(String.format(pre, replace.toArray(new String[0])));
   }

运行结果
在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/qq_16127313/article/details/82924477