【问题标题】:How to add double quotes around a String variable in Java? [duplicate]如何在Java中的String变量周围添加双引号? [复制]
【发布时间】:2017-09-14 21:57:21
【问题描述】:

我知道如何在 Java 中打印字符串文字周围的双引号,但是如何使用字符串变量打印它们?下面的代码不会编译。

String upperCasePhrase = capInitials("the initial letters should be capitalized");
System.out.println(\" upperCasePhrase \");

【问题讨论】:

  • System.out.println('\"' + upperCasePhrase + '\"');使用+ 进行字符串连接。
  • System.out.printf("\"%s\"%n", upperCasePhrase);

标签: java string


【解决方案1】:

您的代码实际上存在 2 个问题。

  1. 您需要确保 \" 是一个字符串。这可以通过用双引号括起来来完成,如下所示:"\""

  2. 使用+打印字符串时需要连接字符串

将问题中的最后一行代码更改为:

System.out.println("\"" + upperCasePhrase + "\"");

【讨论】:

  • 如果字符串变量包含像'\\'这样的字符串,例如:String s = "\\";你如何将它用双引号括起来以获得字符串“\\”?
【解决方案2】:

您可以在char 周围使用单引号;如果您随后将其连接到 Stringchar 将自动转换为 String

System.out.println('"' + upperCasePhrase + '"');

您可能会发现这比使用"\"" 更容易阅读。

【讨论】:

  • char 值实际上不会转换为 String。为字符串连接创建StringBuiilderchar 值直接作为单个字符相加,无需先转换为String
  • @Andreas 不一定。它通常是这样实现的,但不是required by the specification:“如果只有一个操作数表达式是字符串类型,那么在另一个操作数上执行字符串转换(第 5.1.11 节)以在运行时生成一个字符串。”所以Character.toString('"').concat(upperCasePhrase) 等是有效的。
  • 这是编译器所做的。我的观点是,在连接之前,它不会通过首先转换为 String 的开销。
  • @Andreas 我的意思是编译器可能会这样做。规范非常清楚地说明操作数将被转换为字符串。
  • 嗯...代码实际上编译为new StringBuilder(String.valueOf('"')).append(upperCasePhrase).append('"').toString(),所以第一个转换为String,但第二个没有。 奇怪。
【解决方案3】:

为 Java 语言保留了一些特殊字符,您不能在字符串中显式使用这些字符。此类字符需要“转义”或替换为其他符号:

退格替换为 \b

换行符替换为\n

制表符替换为 \t

回车替换为\r

换页被替换为 \f

双引号替换为\"

反斜杠替换为\

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-10-07
    • 1970-01-01
    • 1970-01-01
    • 2013-02-24
    相关资源
    最近更新 更多