【问题标题】:How to add a new line in a String Builder如何在字符串生成器中添加新行
【发布时间】:2021-12-31 04:16:57
【问题描述】:

我正在尝试使用字符串生成器打印一个菜单,在打印每个选项后我想打印一个新行,但我不确定为什么 %n 在这里不起作用。它只是在一行上输出“%n”作为字符串的一部分。 menu[] 已经定义好了。对于我正在做的练习,我需要在不使用正则表达式的情况下进行。

 StringBuilder menuText = new StringBuilder(" 0: " + menu[0] +
            "%n 1: " + menu[1] +
            "%n 2: " + menu[2] +
            "%n 3: " + menu[3] +
            "%n 4: " + menu[4] +
            "%n 5: " + menu[5]);

【问题讨论】:

  • 查看“转义序列”部分here:“以反斜杠 () 开头的字符是转义序列...

标签: java arrays string newline stringbuilder


【解决方案1】:

你可以使用\n,像这样:

 StringBuilder menuText = new StringBuilder(" 0: " + menu[0] +
            "\n 1: " + menu[1] +
            "\n 2: " + menu[2] +
            "\n 3: " + menu[3] +
            "\n 4: " + menu[4] +
            "\n 5: " + menu[5]);

【讨论】:

  • 感谢您的回复,但 \n 是正则表达式,我正在做的练习告诉我不要使用正则表达式。
  • @RyanHolmes \n 不是正则表达式,它是一个字符。
  • 哦,谢谢,只是为了确保不使用 \n 就没有其他方法可以做到这一点,对吧?
  • 您可以使用System.lineSeparator()。它返回\n 用于Linux,\r\n 用于Windows,如%n
【解决方案2】:

这个答案是对“像史蒂夫·沃兹尼亚克一样书呆子”的补充。

您 (OP) 使用 StringBuilder 的方式违背了其流畅性和数据表示的目的。之所以引入它是因为String 的不变性,即附加到String 会创建一个新的StringStringBuilder 提供了一种表示可变字符序列的方法。这是docs

您可以调用StringBuilder#append,而不是附加带有+ 的字符串。

StringBuilder menuText = new StringBuilder()
    .append(" 0: ").append(menu[0]).append('\n')
    .append(" 1: ").append(menu[1]).append('\n')
    .append(" 2: ").append(menu[2]).append('\n')
    .append(" 3: ").append(menu[3]).append('\n')
    .append(" 4: ").append(menu[4]).append('\n')
    .append(" 5: ").append(menu[5]);

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-06-20
    • 1970-01-01
    • 2016-03-09
    • 1970-01-01
    • 2013-07-30
    • 1970-01-01
    • 1970-01-01
    • 2011-11-03
    相关资源
    最近更新 更多