【问题标题】:Java String Formatting (Columns)Java 字符串格式(列)
【发布时间】:2020-03-25 01:27:55
【问题描述】:

在 Java 中是否有用于格式化字符串的本机代码或库,如下面用 C# 制作的方式?

来源:Format a string into columns (C#)

public string DropDownDisplay { 
  get { 
    return String.Format("{0,-10} - {1,-10}, {2, 10} - {3,5}"), 
                          Name, City, State, ID);
  } 
} 

【问题讨论】:

标签: java string-formatting


【解决方案1】:

Java 为 String.format() 提供了多种选项来格式化文本和数字。

不需要额外的库,它是一个内置功能。

语法与您的示例非常相似。基本上,要打印字符串,您可以使用%s 占位符。对于十进制数,使用%d。请参阅上面的链接以获取所有可能类型的完整列表。

String name = "Saskia";
int age = 23;
String formattedText = String.format("%s is %d years old.", name, age);

如果您想要类似列的输出,您可以添加标志以进行额外的填充和对齐。

String formattedText = String.format("%-10s is %-5d years old.", name, age);

%-10s 中,%s 定义字符串类型,- 用于左对齐,10 定义填充宽度。

【讨论】:

  • 这不是我搜索的原因。我想要具有特定数量字符的列。我知道这种简单的格式。
  • 我已更新我的分析器并包含有关格式化标志的信息。请参阅我的链接,文档中有关于这些标志的完整部分。
【解决方案2】:

Java 还有一个String 格式化选项:

public String DropDownDisplay(){
    return String.format("%-10s - %-10s, %10s - %5s", "name", "city", "state", "id");
}

有许多格式说明符:

  • %s - 字符串值
  • %d - 十进制整数

要指定宽度,您可以使用%SomeNumber 选项,
正数将在指定宽度内右对齐,负数将左对齐

这是您可以使用的Java format examples

【讨论】:

  • 但我想要两列或更多列并排。并为每列定义字符数。
  • 我编辑了我的答案,%SomeNumber 做到了,就像 C# 一样,请阅读我在答案中输入的示例
  • 谢谢,这正是我在 Java 中搜索到的内容
  • 但是你能不能描述一下 %-10s 和 %10s 之间的区别?会很棒。
  • 请参阅Flags 部分中的文档。减号用于左对齐,10 是填充宽度。
【解决方案3】:

简单的 String 方法 format 提供与 C 的 printf 相同的功能。

但是 JDK 类 java.text.MessageFormat 提供了非常丰富的格式化方式。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-02-24
    • 1970-01-01
    • 1970-01-01
    • 2011-02-20
    • 2023-03-16
    相关资源
    最近更新 更多