我正在从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(\)
答案 0 :(得分:1)
你的答案应该用引号括起来
"%c".format(e) should be("\"")
"%c".format(f) should be("\\")
因为它不会识别字符串,除非它用引号括起来
答案 1 :(得分:0)
检查报价标记。
https://www.tutorialspoint.com/scala/scala_strings.htm
https://docs.scala-lang.org/overviews/core/string-interpolation.html
https://learnxinyminutes.com/docs/scala/
您可以在线运行Scala代码并在此处查看:
答案 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为绿色,但特殊的非文字字符以橙色突出显示。