【发布时间】: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