【问题标题】:How to use String.format in groovy?如何在 groovy 中使用 String.format?
【发布时间】:2017-03-16 21:09:52
【问题描述】:

下面的代码打印response变量,前面有空格。

response变量前要打印的空格数相当于itemNumberexamineeResponses的差值。

现在,是否可以使用 String.format 将字符串填充为零 ("0") 而不是空格?

def converted = examineeResponses+String.format("%${itemNumber - 1}s", response)

使用上述代码的示例:

examineeResponses = '1' // String
itemNumber = 10 //int
response = '3' // String

输出:

"        3"

期望的输出:

"000000003"

【问题讨论】:

    标签: groovy string.format


    【解决方案1】:

    我相信你可以做到这一点,但你的问题有点难以理解:

    int itemNumber = 10
    String examineeResponses = '1'
    char response = '3'
    
    "$response".padLeft( itemNumber - examineeResponses.length(), '0' )
    

    虽然我怀疑(你没有说)你只是希望它打印itemNumbers 个字符宽。如果是这种情况,您只需要:

    "$response".padLeft( itemNumber, '0' )
    

    你根本不需要examineeResponses

    我在您的问题中遇到的一个问题是我不知道examineeResponses.length() 应该做什么(除了抛出错误)。另一个是我不确定这是你想要做的;-)

    您不能在 Java 或 Groovy 中使用 String.format 对字符串进行零填充,您只能对数字进行零填充

    【讨论】:

    • 应试者Responses.length() 指的是响应变量的长度。它是一个整数..
    • Integer.length() 不是一种方法。长度是什么意思?
    • 如果要将整数转换为字符串,您的意思是字符串的长度吗?喜欢:"${14}".length() == 2?
    • examineeResponses 实际上是一个字符串,我使用 length() 来获取它的大小。谢谢。
    • 啊,当你一直说你的问题是int 时,我很困惑......更新了我的答案中的 padLeft 行
    【解决方案2】:

    试试这样的:

    def formattedString = "blahblah.com?param=${param}&hash=${hash}"
    

    【讨论】:

    • 这不能回答问题。
    • 这正是我一直在寻找的。​​span>
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-04-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-06-28
    相关资源
    最近更新 更多