根据每个字段的最大长度组织一个字符串

时间:2010-12-22 12:43:09

标签: java string

我制作了一个程序,通过阅读课程并创建如下所示的方法,让我的生活更轻松:

//Ferramentas Parâmetros 
acessos.add(new AcessoBean("Ferramentas", "Parâmetros", "Parâmetros", "Pesquisa", "ppaParametrosList", null, TipoAcessoBean.TELA));
acessos.add(new AcessoBean("Ferramentas", "Parâmetros", "Parâmetros", "Gravar", "ppaParametrosHome", "persist", TipoAcessoBean.ACAO));
acessos.add(new AcessoBean("Ferramentas", "Parâmetros", "Parâmetros", "Atualizar Dados", "ppaParametrosHome", "update", TipoAcessoBean.ACAO));
acessos.add(new AcessoBean("Ferramentas", "Parâmetros", "Parâmetros", "Leitura", "ppaParametrosHome", "find", TipoAcessoBean.ACAO));
acessos.add(new AcessoBean("Ferramentas", "Parâmetros", "Parâmetros", "Excluir", "ppaParametrosHome", "remove", TipoAcessoBean.ACAO));

不要担心语言。它不会让我更难理解我需要做什么。 我想把它组织起来像这样显示:

//Ferramentas Parâmetros 
acessos.add(new AcessoBean("Ferramentas", "Parâmetros", "Parâmetros", "Pesquisa"       , "ppaParametrosList", null     , TipoAcessoBean.TELA));
acessos.add(new AcessoBean("Ferramentas", "Parâmetros", "Parâmetros", "Gravar"         , "ppaParametrosHome", "persist", TipoAcessoBean.ACAO));
acessos.add(new AcessoBean("Ferramentas", "Parâmetros", "Parâmetros", "Atualizar Dados", "ppaParametrosHome", "update" , TipoAcessoBean.ACAO));
acessos.add(new AcessoBean("Ferramentas", "Parâmetros", "Parâmetros", "Leitura"        , "ppaParametrosHome", "find"   , TipoAcessoBean.ACAO));
acessos.add(new AcessoBean("Ferramentas", "Parâmetros", "Parâmetros", "Excluir"        , "ppaParametrosHome", "remove" , TipoAcessoBean.ACAO));

我正在使用Scanner阅读全班,但是一旦我阅读,我只会在包含上述内容的Collection中保存我想要的内容。如何制作一个方法来填空并使其有条理?

2 个答案:

答案 0 :(得分:1)

像这样:

import java.util.ArrayList;
import java.util.List;

public class Tabularize {

    static String input =
        "acessos.add(new AcessoBean(\"Ferramentas\", \"Parâmetros\", \"Parâmetros\", \"Pesquisa\", \"ppaParametrosList\", null, TipoAcessoBean.TELA));\n" + 
        "acessos.add(new AcessoBean(\"Ferramentas\", \"Parâmetros\", \"Parâmetros\", \"Gravar\", \"ppaParametrosHome\", \"persist\", TipoAcessoBean.ACAO));\n" + 
        "acessos.add(new AcessoBean(\"Ferramentas\", \"Parâmetros\", \"Parâmetros\", \"Atualizar Dados\", \"ppaParametrosHome\", \"update\", TipoAcessoBean.ACAO));\n" + 
        "acessos.add(new AcessoBean(\"Ferramentas\", \"Parâmetros\", \"Parâmetros\", \"Leitura\", \"ppaParametrosHome\", \"find\", TipoAcessoBean.ACAO));\n" + 
        "acessos.add(new AcessoBean(\"Ferramentas\", \"Parâmetros\", \"Parâmetros\", \"Excluir\", \"ppaParametrosHome\", \"remove\", TipoAcessoBean.ACAO));";

    public static void main( String[] args ) {

        int[] maxWidth = new int[1024];

        String[] lines = input.split( "\n" );
        List<String[]> output = new ArrayList<String[]>();
        for( String line : lines ) {
            String[] columns = line.split( "\\s*,\\s*" );
            output.add( columns );

            int i = 0;
            for( String column : columns ) {
                maxWidth[i] = Math.max( maxWidth[i], column.length() );
                i ++;
            }
        }

        for( String[] columns : output ) {
            int i = 0;
            String delim = "";
            for( String column : columns ) {
                System.out.print( delim );
                delim = ", ";

                String format = String.format("%%-%ds", maxWidth[i]);
                System.out.printf( format, column );

                i ++;
            }

            System.out.println();
        }
    }
}

答案 1 :(得分:0)

  1. 用逗号分隔值。
  2. 查找所有行中最长的字符串 对于每一列。
  3. 重建文本后添加空格 每个值使总长度 等于最长的值 列。