【问题标题】:Java: Equivalent to Python's str.format()Java:相当于 Python 的 str.format()
【发布时间】:2015-10-22 13:08:58
【问题描述】:

在 Python 中,有一个非常好的方法可以简化字符串的创建,使它们的代码美观且可读。

例如下面的代码会打印ExampleProgram -E- Cannot do something

def print_msg(msg_type, msg):
    print 'ExampleProgram -{0}- {1}'.format(msg_type, msg)
print_msg('E', 'Cannot do something')

即我可以使用{x} 语法在字符串中指定“插槽”,其中x 是参数索引,然后它返回一个新字符串,在其中它用传递给.format() 方法的参数替换这些插槽.

目前以我的 Java 知识,我会以这种丑陋的方式实现这样的方法:

void printMsg(String type, String msg) {
    System.out.println("ExampleProgram -" + type + "- " + msg);
}

有没有相当于 Python 的 .format() 字符串方法的东西?

【问题讨论】:

    标签: java python string


    【解决方案1】:

    MessageFormat 有确切的用法。

     int planet = 7;
     String event = "a disturbance in the Force";
    
     String result = MessageFormat.format(
         "At {1,time} on {1,date}, there was {2} on planet {0,number,integer}.",
         planet, new Date(), event);
    

    您可以简单地使用{0123} 而不需要额外的东西。 输出是:

     At 12:30 PM on Jul 3, 2053, there was a disturbance in the Force on planet 7.
    

    【讨论】:

      【解决方案2】:
      System.out.format("ExampleProgram - %s - %s ",type, msg);
      

      您可以使用System.out中的格式化方法。

      然后使用以下内容:

       String output = String.format("ExampleProgram - %s - %s ", type, msg);
      

      这里typemsg 属于String 类型。

      对于任何整数,使用%d,浮点数%f,和String %s

      您可以在 java 文档中找到有关格式化输出的不同方式的所有信息。 Formatting Numeric Print Output

      【讨论】:

      • 谢谢。如果我只想将它存储在一个新字符串中怎么办?
      • @SomethingSomething 我已经更新了答案,请检查。它还包括指向 java 文档的链接。
      【解决方案3】:

      例如:

      String s = String.format("something %s","name");
      

      【讨论】:

      • 谢谢!看起来很相似。 Python 只接受字符串 - 所以看起来就像你的例子一样,我可以使用 %s 然后只是传递字符串。这里唯一的缺点是,如果我想在字符串中多次重复相同的值,我必须一次又一次地传递它,而在 Python 中我只能重复槽 {0} {0}
      • @SomethingSomething 你可以在Java中做类似的事情;看看java.util.Formatter 的例子。
      【解决方案4】:

      System.out.printf() 怎么样?那么你就可以使用c风格的格式了

      【讨论】:

      • 谢谢!我更喜欢一些格式,其中我可以多次重复插槽的索引并且只使用字符串。这也是一个不错的解决方案
      猜你喜欢
      • 2013-05-13
      • 2011-03-13
      • 2018-06-15
      • 2011-04-26
      • 1970-01-01
      • 1970-01-01
      • 2011-05-29
      • 1970-01-01
      相关资源
      最近更新 更多