Scala字符串格式化练习错误:未编译

时间:2017-10-16 19:45:40

标签: scala

我正在从https://www.scala-exercises.org/std_lib/formatting

开始练习

对于以下问题,答案似乎不正确,但我不知道为什么。

val c = 'a' //unicode for a
val d = '\141' //octal for a
val e = '\"'
val f = '\\'

"%c".format(c) should be("a") //my answers
"%c".format(d) should be("a")
"%c".format(e) should be(")
"%c".format(f) should be(\)

3 个答案:

答案 0 :(得分:1)

你的答案应该用引号括起来

"%c".format(e) should be("\"")
"%c".format(f) should be("\\")

因为它不会识别字符串,除非它用引号括起来

答案 1 :(得分:0)

答案 2 :(得分:0)

您的最后两行是无效的Scala代码,无法编译:

// These are wrong
"%c".format(e) should be(")
"%c".format(f) should be(\)

be()函数需要传递一个String,而这些调用都没有传递给String。 String需要以双引号开头和结尾(有一些例外)。

// In this case you started a String with a double-quote, but you are never
// closing the string with a second double-quote
"%c".format(e) should be(")  

// In this case you are missing both double-quotes
"%c".format(f) should be(\)

在这种情况下,代码应为:

"%c".format(e) should be("\"")
"%c".format(f) should be("\\")

如果你想在字符串中字符处理字符,你需要用反斜杠“转义”它。因此,如果您希望逐字显示双引号,则需要在其前面加上反斜杠:

\"

作为字符串:

"\""

类似地反斜杠:

\\

作为字符串:

"\\"

使用IDE可以更容易地看到它。使用IntelliJ时,String为绿色,但特殊的非文字字符以橙色突出显示。

enter image description here