2

嗨,我想以表格格式打印 hashmap 的数据。下面是我在 hashmap 中插入数据的代码。

 String foldername = item.getParent().substring(item.getParent().lastIndexOf("/") + 1);
                        statusname = foldername + "\t" + _DeployResult.ServerIP + "\t" + _DeployResult.ServerType;
                        if (!Prdeploy.statusmap.containsKey(statusname)) {
                            Prdeploy.statusmap.put(statusname, 0);
                        }

以下是为打印日志文件中的数据而编写的代码:

 logger.info("****************Summary Report****************");
                   logger.info("Folder\tServer\tType\tFailed");

        for (String name: statusmap.keySet()){

            String key =name.toString();
            String value = statusmap.get(name).toString();  

            System.out.println(key + "  " + value);  
            logger.info(key + "\t" + value);
} 
        logger.info("**********************************************");

在这里我得到上面的输出如下:

****************Summary Report****************
Folder  Server  Type    Failed
180_Perl_Scripts            10.5.50.195 SS  0
050_Images              10.5.50.195 SS  0
020_XSL             10.5.50.195 SS  0
srf             10.5.50.195 SS  0
030_XSLT            10.5.50.195 SS  0
bscript 10.5.50.195 SS  0
bscript 10.5.50.195 WS  1
010_StyleSheets             10.5.50.195 SS  0
040_WebTemplates            10.5.50.195 SS  0
050_Images              10.5.50.195 WS  0
060_js_Files            10.5.50.195 SS  0
010_StyleSheets             10.5.50.195 WS  0
**********************************************

但我希望我的输出如下:

    ****************Summary Report****************
Folder                  Server          Type    Failed
180_Perl_Scripts            10.5.50.195 SS  0
050_Images              10.5.50.195 SS  0
020_XSL                     10.5.50.195 SS  0
srf                     10.5.50.195 SS  0
030_XSLT                    10.5.50.195 SS  0
bscript                 10.5.50.195 SS  0
bscript                 10.5.50.195 WS  1
010_StyleSheets             10.5.50.195 SS  0
040_WebTemplates            10.5.50.195 SS  0
050_Images              10.5.50.195 WS  0
060_js_Files            10.5.50.195 SS  0
010_StyleSheets             10.5.50.195 WS  0
**********************************************

在这里,我无法放置确切的模式。但我只是希望它变成表格格式。结构良好。有没有办法做到这一点?请在这里帮助我!

4

4 回答 4

5

尝试这个

String str = String.format("%-10s%-10s%-10s%s", statusMap.get("Folder"), statusMap.get("Server"), statusMap.get("Type"), statusMap.get("Failed"));
logger.info(str);
于 2013-06-18T10:49:12.347 回答
2

您可以使用 String.format 方法格式化您的字符串。

`logger.info(String.format("%-20s %-20s%-10s%-10s" , "Folder", "Server", "Type", "Failed" ));`

其中 %s 是您的字符串的占位符。'-' 使结果左对齐。20 和 10 是字符串的宽度

于 2013-06-18T10:44:30.553 回答
0

如果您只需要它用于显示目的,也就是说您实际上并不需要它是制表符,那么很容易创建一个 padRight() 或 padLeft() 方法来用空格填充字符串

就像是:

String padRight(String inputStr, int length)
{
   while(inputStr.length() <= length)
       inputStr = inputStr + " ";
   return inputStr;
}

这可以很容易地修改为接受您希望填充的任何字符。

于 2013-06-18T10:47:41.887 回答
0

使用标签并不容易。您必须了解 tab 是它以空格组的形式出现。我认为选项卡的默认值为 4 个空格。这就像这样工作。

开始__中间_结束

下划线组是一个制表符。每个下划线都是一个空格。你有Start它的长度为 5。所以它重叠 1。所以当你按下制表符时,它将进入位置 8(就像 4 个制表符的两个制表符),即 3 个空格。与中间相同。

您需要使用的是格式化程序

于 2013-06-18T10:49:47.130 回答