You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Kotlin日志中为变量填充空格以实现消息垂直对齐?

解决Kotlin日志消息垂直对齐问题

没问题,这有两种简单的方法能帮你实现日志的垂直对齐,让PASSEPORT和RESIDENCE_PERMIT始终从同一位置开始:

方法1:使用String.format格式化字符串

Kotlin完全兼容Java的格式化语法,你可以通过String.format指定第一个变量的固定宽度并左对齐,不足的部分自动补空格:

LOGGERCTRLONE.info(
    String.format(
        "Correctly Read document | doctype found : %-20s | %s",
        nameIdDocument,
        resultPreventRequest.documentType
    )
)

这里的%-20s含义:

  • %s:字符串类型占位符
  • -:设置左对齐(默认是右对齐,不加-的话短字符串会靠右,达不到对齐效果)
  • 20:固定宽度为20个字符,长度不足时自动用空格填充

方法2:使用Kotlin的padEnd扩展函数

Kotlin自带了字符串填充的扩展函数padEnd,可以直接对nameIdDocument进行空格填充,确保它的长度固定:

LOGGERCTRLONE.info(
    "Correctly Read document | doctype found : ${nameIdDocument.padEnd(20)} | ${resultPreventRequest.documentType}"
)

padEnd(20)会把字符串填充到20个字符长度,默认用空格补全。如果nameIdDocument的长度超过20,它不会自动截断,若需要截断过长的字符串,可以改成:

${nameIdDocument.take(20).padEnd(20)}

为什么你之前用%s-20没用?

在Kotlin的字符串模板($变量)中,直接写%s-20是无效的——模板只会直接替换变量值,不会解析格式化占位符,必须用String.format或者专门的字符串填充函数来实现对齐效果。

内容的提问来源于stack exchange,提问作者Olivier Neeb

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.27 14:27:33