在 Scala 中,转义字符是用来表示一些在字符串中不能直接表示的特殊字符。例如,换行符、制表符、反斜杠等字符都需要使用转义字符来表示。转义字符以反斜杠 \ 开头,后面跟随一个特殊字符来表示相应的功能。


📖 目录

  1. 常见的转义字符
  2. 换行和制表符
  3. 反斜杠和引号的转义
  4. Unicode 转义字符
  5. 原始字符串与转义字符
  6. 参考资料

1. 常见的转义字符

Scala 中支持的转义字符包括以下几种:

转义字符描述示例
\n换行符println("Hello\nWorld") 会输出两行文本。
\t制表符(Tab)println("Hello\tWorld") 会在两个单词间添加一个水平制表符。
\\反斜杠字符println("C:\\Users\\Name") 会输出 C:\Users\Name
\'单引号字符println('A') 会输出 A
\"双引号字符println("\"Scala\"") 会输出 "Scala"
\b退格符println("123\b456") 会输出 12456
\r回车符println("Hello\rWorld") 会输出 World
\f换页符println("Hello\fWorld") 会在文本中插入换页符。
\uUnicode 转义字符\u0041 代表字符 A

示例:

val text = "Hello\nWorld"
println(text)   // 输出:
                // Hello
                // World


2. 换行和制表符

  • 换行符 \n:用于在字符串中插入换行,将光标移到下一行的开头。
  • 制表符 \t:用于在字符串中插入一个水平制表符,通常用来对齐文本。

示例:

val textWithNewline = "Hello\nWorld"
val textWithTab = "Hello\tScala"

println(textWithNewline)   // 输出:
                           // Hello
                           // World

println(textWithTab)       // 输出:Hello    Scala


3. 反斜杠和引号的转义

  • 反斜杠 \\:在字符串中插入一个反斜杠字符,因为反斜杠本身是转义字符,所以需要用 \\ 来表示一个实际的反斜杠。
  • 单引号 \':用于表示单引号字符(通常用于字符字面量)。
  • 双引号 \":用于在字符串字面量中插入双引号字符。

示例:

val filePath = "C:\\Users\\John\\Documents"
val singleQuote = "I\'m learning Scala."
val doubleQuote = "\"Scala\" is a great language!"

println(filePath)        // 输出:C:\Users\John\Documents
println(singleQuote)     // 输出:I'm learning Scala.
println(doubleQuote)     // 输出:"Scala" is a great language!


4. Unicode 转义字符

Scala 支持使用 Unicode 转义字符表示任何字符。Unicode 字符使用 \u 后跟四个十六进制数字表示。

示例:

val unicodeChar = "\u0041"  // 代表字母 'A'
println(unicodeChar)        // 输出:A

val unicodeStr = "\u0048\u0065\u006C\u006C\u006F"  // 代表字符串 "Hello"
println(unicodeStr)         // 输出:Hello


5. 原始字符串与转义字符

原始字符串字面量(raw)在 Scala 中用于禁用转义字符的功能。原始字符串会原样输出字符串中的所有字符,包括反斜杠和换行符,因此常常用于处理文件路径或正则表达式。

示例:

val regularString = "This is a\nnew line."
val rawString = raw"This is a\nnew line."

println(regularString)  // 输出:This is a
                        //       new line.
println(rawString)      // 输出:This is a\nnew line.

使用 raw 前缀时,字符串中的转义字符不会被解析成它们的实际功能,反而直接输出转义字符本身。


6. 参考资料


通过使用转义字符,Scala 开发者可以更方便地处理字符串中的特殊字符。无论是文本格式化、路径处理,还是需要禁用转义的原始字符串,Scala 提供了强大的转义字符功能来满足各种需求。