Функция strings.ToValidUTF8

Функция strings.ToValidUTF8 проверяет строку на наличие невалидных UTF-8 последовательностей и заменяет их на указанную подстроку. Первым параметром функция принимает исходную строку для проверки, вторым параметром - строку замены для невалидных символов.

Синтаксис

gostrings.ToValidUTF8(str, replacement)

Пример

Давайте проверим строку, содержащую невалидную UTF-8 последовательность, и заменим ее на символ вопросительного знака:

gopackage main

import (
  "fmt"
  "strings"
)

func main() {
  // Создаем строку с невалидной UTF-8 последовательностью
  invalidStr := "Hello\xffWorld"
  res := strings.ToValidUTF8(invalidStr, "?")
  fmt.Println(res)
}

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

go"Hello?World"

Пример

Заменим невалидные UTF-8 символы на пустую строку, тем самым удалив их:

gopackage main

import (
  "fmt"
  "strings"
)

func main() {
  // Создаем строку с невалидными UTF-8 последовательностями
  invalidStr := "abc\xff\xfedef"
  res := strings.ToValidUTF8(invalidStr, "")
  fmt.Println(res)
}

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

go"abcdef"

Пример

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

gopackage main

import (
  "fmt"
  "strings"
)

func main() {
  validStr := "Hello, 世界"
  res := strings.ToValidUTF8(validStr, "?")
  fmt.Println(res)
}

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

go"Hello, 世界"

Пример

Проверим строку, содержащую несколько невалидных последовательностей, и заменим их на пользовательскую подстроку:

gopackage main

import (
  "fmt"
  "strings"
)

func main() {
  // Создаем строку с несколькими невалидными UTF-8 последовательностями
  invalidStr := "\xffHello\xfe\xffWorld\xfd"
  res := strings.ToValidUTF8(invalidStr, "[INVALID]")
  fmt.Println(res)
}

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

go"[INVALID]Hello[INVALID][INVALID]World[INVALID]"

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

  • функцию utf8.ValidString,
    которая проверяет, является ли строка валидным UTF-8
  • функцию utf8.RuneCountInString,
    которая подсчитывает количество рун в строке
  • функцию strings.Map,
    которая преобразует каждый символ строки с помощью функции
  • функцию strings.ReplaceAll,
    которая заменяет все вхождения подстроки на другую строку