Функция strconv.QuoteToASCII

Функция strconv.QuoteToASCII преобразует переданную строку в строковый литерал в кодировке ASCII, заключая результат в двойные кавычки. В первом параметре функция принимает исходную строку. Она возвращает строку, где все символы, не входящие в набор ASCII, заменяются на escape-последовательности вида \uXXXX. Кроме того, внутри строки экранируются все управляющие символы и символы, которые не могут быть напечатаны. Эта функция особенно полезна при генерации JSON или других текстовых форматов, которые должны содержать только ASCII-символы.

Синтаксис

gostrconv.QuoteToASCII(str)

Пример

Давайте преобразуем строку 'Hello, 世界', содержащую не-ASCII символы:

gopackage main

import (
  "fmt"
  "strconv"
)

func main() {
  res := strconv.QuoteToASCII("Hello, 世界")
  fmt.Println(res)
}

Результат выполнения кода:

go"Hello, \u4e16\u754c"

Пример

Теперь применим функцию к строке, содержащей специальные символы, такие как табуляция и кавычка:

gopackage main

import (
  "fmt"
  "strconv"
)

func main() {
  res := strconv.QuoteToASCII("Hello\t\"World\"")
  fmt.Println(res)
}

Результат выполнения кода:

go"Hello\t\"World\""

Пример

Сравним поведение strconv.QuoteToASCII с обычной функцией strconv.Quote. Для ASCII-строки результат будет одинаковым:

gopackage main

import (
  "fmt"
  "strconv"
)

func main() {
  s := "Hello, Go!"
  quoted := strconv.Quote(s)
  asciiQuoted := strconv.QuoteToASCII(s)
  fmt.Println(quoted)
  fmt.Println(asciiQuoted)
}

Результат выполнения кода:

go"Hello, Go!"
"Hello, Go!"

Смотрите также

  • функцию strconv.Quote,
    которая преобразует строку в экранированную строку, но сохраняет Unicode-символы
  • функцию strconv.QuoteRune,
    которая преобразует руну в экранированный строковый литерал
  • функцию strconv.Unquote,
    которая выполняет обратную операцию — преобразует экранированную строку в исходную
  • функцию strconv.IsPrint,
    которая проверяет, является ли символ печатаемым в формате UTF-8