【问题标题】:How do i indent a new line when using String.format?使用 String.format 时如何缩进新行?
【发布时间】:2018-07-26 03:00:35
【问题描述】:

我目前正在开发一个项目并使用基于文本的日志记录系统。我以“Test String \nTest String2 \n Test String3”的形式给方法我的String。

这就是字符串格式的样子。

adminWriter.newLine();
DateFormat dateFormat = new SimpleDateFormat("yyyy/MM/dd HH:mm:ss");
Date date = new Date();
String currDateTime = dateFormat.format(date);

adminWriter.write(String.format("%-20s | %-50s", currDateTime, text));

并且方法是这样调用的……

Start.scribe.adminToDoWrite("User: "+this.riderID
                                    +"\nTo Delete Horse: "+this.horses[row].getHorseID()
                                    +"\nHorse Name: "+this.horses[row].getHorseName());

当前的输出是这样的

{Date And Time} | User: (Number)
To Delete Horse: (Number)
Horse Name: (Name)

有没有办法让它看起来像这样?这样每个新行都会自动缩进到 String.format 规则?

{Date And Time} | User: (Number)
                  To Delete Horse: (Number)
                  Horse Name: (Name)

非常感谢

【问题讨论】:

  • String.format 规则?那些是什么?
  • "\t" - 用于标签
  • 在字符串中放置一个制表符是\t,但看起来您希望文本一直移动到第一个变量旁边的| 的右侧。如果是这种情况,您需要弄清楚第一个字符串有多长,并在下一行的开头添加那么多空格。
  • 我建议你避免使用SimpleDateFormat 类。它不仅过时了,而且出了名的麻烦。今天我们在java.time, the modern Java date and time API 中做得更好。例如使用LocalDateTime.now(yourTimeZone).format(DateTimeFormatter.ofPattern("yyyy/MM/dd HH:mm:ss"))

标签: java string formatting


【解决方案1】:

你需要改变

发件人:

Start.scribe.adminToDoWrite("User: "+this.riderID
                                +"\nTo Delete Horse: "+this.horses[row].getHorseID()
                                +"\nHorse Name: "+this.horses[row].getHorseName());

收件人:

Start.scribe.adminToDoWrite("User: "+this.riderID
            +"\n                       To Delete Horse: "+this.horses[row].getHorseID()
            +"\n                       Horse Name: "+this.horses[row].getHorseName());

【讨论】:

    猜你喜欢
    • 2015-12-19
    • 2018-09-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-12-27
    • 2011-01-19
    相关资源
    最近更新 更多