Строковые литералы (экранированные символы)
Выражение |
Результат |
Описание |
"" |
|
Нулевое значение по умолчанию для типа string |
"Japan 日本" |
Japan 日本 |
Код Go это Unicode текст, кодированный в UTF‑8 |
"\xe6\x97\xa5" |
日 |
\xNN определяет byte |
"\u65E5" |
日 |
\uNNNN определяет Unicode значение |
"\\" |
\ |
Обратный слэш |
"\"" |
" |
Двойная кавычка |
"\n" |
|
Новая строка |
"\t" |
|
Символ табуляции |
`\xe6` |
\xe6 |
Необработанный строковый литерал |
html.EscapeString("<>") |
<> |
HTML экранирование для <, >, &, ' и " |
url.PathEscape("A B") |
A%20B |
URL %-кодирование net/url |
В необработанных строковых литералах (заключены в обратные кавычки ``) текст интерпретируется буквально и обратные слэши не имеют специального значения.
Конкатенация
Выражение |
Результат |
Описание |
"Ja" + "pan" |
Japan |
Конкатенация |
Эквивалетность и сравнение (игнорируя регистр)
Выражение |
Результат |
Описание |
"Japan" == "Japan" |
true |
Эквивалетность |
strings.EqualFold("Japan", "JAPAN") |
true |
Сравнение Unicode с оберткой регистра |
"Japan" < "japan" |
true |
Сравнение в лексикографическом порядке |
Длина в байтах или рунах
Выражение |
Результат |
Описание |
len("日") |
3 |
Длина в байтах |
utf8.RuneCountInString("日") |
1 |
Длина в рунах unicode/utf8 |
utf8.ValidString("日") |
true |
Проверка UTF-8 ли переданная строка (unicode/utf8) |
Индексирование, создание подстроки, итерация
Выражение |
Результат |
Описание |
"Japan"[2] |
'p' |
Байт в позиции 2 |
"Japan"[1:3] |
ap |
Индексирование байтов |
"Japan"[:2] |
Ja |
|
"Japan"[2:] |
pan |
|
Цикл range в Go производит итерацию по UTF-8-кодированным символам (руны):
for i, ch := range "Japan 日本" {
fmt.Printf("%d:%q ", i, ch)
}
// Вывод: 0:'J' 1:'a' 2:'p' 3:'a' 4:'n' 5:' ' 6:'日' 9:'本'
Итерация по байтам производит бессмысленные символы для не-ASCII текста:
s := "Japan 日本"
for i := 0; i < len(s); i++ {
fmt.Printf("%q ", s[i])
}
// Вывод: 'J' 'a' 'p' 'a' 'n' ' ' 'æ' '\u0097' '¥' 'æ' '\u009c' '¬'
Поиск (contains, prefix/suffix, index)
Выражение |
Результат |
Описание |
strings.Contains("Japan", "abc") |
false |
abc в Japan? |
strings.ContainsAny("Japan", "abc") |
true |
a, b или c в Japan? |
strings.Count("Banana", "ana") |
1 |
не перекрывающиеся экземпляры ana |
strings.HasPrefix("Japan", "Ja") |
true |
Japan начинается с Ja? |
strings.HasSuffix("Japan", "pan") |
true |
Japan заканчивается на pan? |
strings.Index("Japan", "abc") |
-1 |
Индекс первого abc |
strings.IndexAny("Japan", "abc") |
1 |
Индекс первого a, b или c |
strings.LastIndex("Japan", "abc") |
-1 |
Индекс последнего abc |
strings.LastIndexAny("Japan", "abc") |
3 |
Индекс последнего a, b или c |
Замена (uppercase/lowercase, trim)
Выражение |
Результат |
Описание |
strings.Replace("foo", "o", ".", 2) |
f.. |
Замена первых двух “o” на “.”. Используйте -1, чтобы заменить все подходящие символы. |
f := func(r rune) rune {
return r + 1
}
strings.Map(f, "ab")
|
bc |
Применяет функцию к каждому символу |
strings.ToUpper("Japan") |
JAPAN |
Приведение к верхнему регистру |
strings.ToLower("Japan") |
japan |
Приведение к нижнему регистру |
strings.Title("ja pan") |
Ja Pan |
Приведение к верхнему регистру первых букв |
strings.TrimSpace(" foo\n") |
foo |
Удаление начального и завершающего пробела |
strings.Trim("foo", "fo") |
|
Удаление начальных и завершающих f и s |
strings.TrimLeft("foo", "f") |
oo |
Удаление начальных f |
strings.TrimRight("foo", "o") |
f |
Удаление завершающих f |
strings.TrimPrefix("foo", "fo") |
o |
Удаление префикса |
strings.TrimSuffix("foo", "o") |
fo |
Удаление суффикса |
Разделение по пробелам или запятым
Выражение |
Результат |
Описание |
strings.Fields(" a\t b\n") |
["a" "b"] |
Удаление пробелов |
strings.Split("a,b", ",") |
["a" "b"] |
Удаление разделителя |
strings.SplitAfter("a,b", ",") |
["a," "b"] |
Сохранение разделителя |
Объединение строки с разделителем
Выражение |
Результат |
Описание |
strings.Join([]string{"a", "b"}, ":") |
a:b |
Добавление разделителя |
strings.Repeat("da", 2) |
dada |
2 копии “da” |
Форматирование и конвертирование
Выражение |
Результат |
Описание |
strconv.Itoa(-42) |
"-42" |
Int к string |
strconv.FormatInt(255, 16) |
"ff" |
Конвертирование к шестнадцетиричной основе |
Sprintf
Функция fmt.Sprintf часто лучший выбор для форматирования данных:
s := fmt.Sprintf("%.4f", math.Pi) // s == "3.1416"
Читайте также:
Канал в Телеграм
Комментариев нет:
Отправить комментарий