Функция strconv.Unquote

Функция strconv.Unquote выполняет распаковку строки, которая была заключена в кавычки и содержит экранированные символы. Она принимает один параметр - строку с кавычками (например, "hello\nworld" или `hello`) и возвращает распакованную строку, а также ошибку, если распаковка невозможна.

Функция поддерживает все стандартные управляющие последовательности, такие как \n, \t, \r, а также восьмеричные и шестнадцатеричные экранирования. Строка должна быть заключена в двойные кавычки ("...") или обратные кавычки (`...`).

Синтаксис

gostrconv.Unquote(s)

Пример

Давайте распакуем строку с экранированным символом новой строки:

gopackage main

import (
  "fmt"
  "strconv"
)

func main() {
  res, err := strconv.Unquote("hello\\nworld")
  if err != nil {
    fmt.Println(err)
    return
  }
  fmt.Println(res)
}

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

go"hello
world"

Пример

Давайте распакуем строку с табуляцией и кавычками внутри:

gopackage main

import (
  "fmt"
  "strconv"
)

func main() {
  res, err := strconv.Unquote("\"hello\\tworld\\\"\"")
  if err != nil {
    fmt.Println(err)
    return
  }
  fmt.Println(res)
}

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

go"hello  world""

Пример

Давайте попробуем распаковать строку, заключенную в обратные кавычки:

gopackage main

import (
  "fmt"
  "strconv"
)

func main() {
  res, err := strconv.Unquote("`hello\\nworld`")
  if err != nil {
    fmt.Println(err)
    return
  }
  fmt.Println(res)
}

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

go"hello\\nworld"

Обратите внимание: в строке с обратными кавычками экранирование не обрабатывается, поэтому \\n остается как два символа.

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

  • функцию strconv.Quote,
    которая выполняет экранирование строки с добавлением кавычек
  • функцию strconv.UnquoteChar,
    которая распаковывает один экранированный символ
  • функцию strconv.QuoteToASCII,
    которая экранирует строку в ASCII-представление
  • функцию strconv.CanBackquote,
    которая проверяет возможность использования обратных кавычек