对于给定的由纯英文单词(每个单词长度小于80个字符)和空格组成的文本文件,我们需要对其做一次对齐的处理。要求处理后的文件,每行不超过80个字符,单词不能被截断,同行单词间有且只有一个空格,每行不能以空格开始。请实现完成这个功能的处理函数

解决方案 »

  1.   

    请参考
    package test;import java.util.LinkedList;
    import java.util.List;/**
     * 数据对齐
     * 
     * @author java2000_net
     * 
     */
    public class T3 {
    /**
     * @param args
     */
    public static void main(String[] args) {
    String str = "1 55555       666666   22  333 7777777    4444  333   22";
    // 根据空格分隔字符
    String[] data = str.split("\\s+");
    String[] rtn = toLengh(data, 7);
    for (int i = 0; i < rtn.length; i++) {
    System.out.println(rtn[i] + "\t" + rtn[i].length());
    }
    } /**
     * 数组重组到指定长度
     * 
     * @param data
     * @param length
     * @return
     */
    public static String[] toLengh(String[] data, int length) {
    List<String> list = new LinkedList<String>();
    StringBuilder str = new StringBuilder(data[0]);
    for (int i = 1; i < data.length; i++) {
    if (str.length() + 1 + data[i].length() <= length) {
    str.append(" " + data[i]);
    } else {
    list.add(str.toString());
    str.setLength(0);
    str.append(data[i]);
    }
    }
    return (String[]) list.toArray(new String[0]);
    }
    }