Update utf8 task
This commit is contained in:
parent
201caf1971
commit
549ee264a9
4 changed files with 6 additions and 6 deletions
|
@ -5,8 +5,8 @@
|
||||||
Функция принимает на вход юникодную строку и должна возвращать строку,
|
Функция принимает на вход юникодную строку и должна возвращать строку,
|
||||||
состоящую из тех же юникодных рун, но записанных в обратном порядке.
|
состоящую из тех же юникодных рун, но записанных в обратном порядке.
|
||||||
|
|
||||||
Если строка содержит последовательность байт, не образующую корректный utf8, нужно развернуть
|
Каждый байт входной строки, который не образует корректную utf8 последовательность, нужно
|
||||||
эту последовательность как отдельные байты.
|
заменить на unicode replacement character.
|
||||||
|
|
||||||
Обратите внимание в тестах, что некоторые графемы распадаются при обращении строки.
|
Обратите внимание в тестах, что некоторые графемы распадаются при обращении строки.
|
||||||
Данный эффект связан с тем, что в юникоде некоторые руны умеют комбинироваться в одну графему.
|
Данный эффект связан с тем, что в юникоде некоторые руны умеют комбинироваться в одну графему.
|
||||||
|
|
|
@ -37,7 +37,7 @@ func TestReverse(t *testing.T) {
|
||||||
{input: "🇩🇪", output: "🇪🇩"},
|
{input: "🇩🇪", output: "🇪🇩"},
|
||||||
// NB: Флаг распался. :)
|
// NB: Флаг распался. :)
|
||||||
{input: "🏳️🌈", output: "🌈️🏳"},
|
{input: "🏳️🌈", output: "🌈️🏳"},
|
||||||
{input: "\xff\x00\xff\x00", output: "\x00\xff\x00\xff"},
|
{input: "\xff\x00\xff\x00", output: "\x00\xef\xbf\xbd\x00\xef\xbf\xbd"},
|
||||||
} {
|
} {
|
||||||
t.Run(fmt.Sprintf("#%v: %v", i, tc.input), func(t *testing.T) {
|
t.Run(fmt.Sprintf("#%v: %v", i, tc.input), func(t *testing.T) {
|
||||||
require.Equal(t, tc.output, Reverse(tc.input))
|
require.Equal(t, tc.output, Reverse(tc.input))
|
||||||
|
|
|
@ -5,8 +5,8 @@
|
||||||
Функция принимает на вход юникодную строку и должна возвращать строку,
|
Функция принимает на вход юникодную строку и должна возвращать строку,
|
||||||
состоящую из тех же символов, но где все подряд идущие группы пробельных символов заменены на ' ' (один обычный пробел).
|
состоящую из тех же символов, но где все подряд идущие группы пробельных символов заменены на ' ' (один обычный пробел).
|
||||||
|
|
||||||
Некорректную utf8 последовательность функция должна оставлять без изменений.
|
Каждый байт входной строки, который не образует корректную utf8 последовательность, нужно
|
||||||
|
заменить на unicode replacement character.
|
||||||
## Примеры
|
## Примеры
|
||||||
|
|
||||||
Как запустить все тесты:
|
Как запустить все тесты:
|
||||||
|
|
|
@ -22,7 +22,7 @@ func TestCollapseSpaces(t *testing.T) {
|
||||||
{input: "\t*", output: " *"},
|
{input: "\t*", output: " *"},
|
||||||
{input: " \t \t ", output: " "},
|
{input: " \t \t ", output: " "},
|
||||||
{input: " \tx\t ", output: " x "},
|
{input: " \tx\t ", output: " x "},
|
||||||
{input: "\xff\x00\xff\x00", output: "\xff\x00\xff\x00"},
|
{input: "\xff\x00 \xff\x00", output: "\xef\xbf\xbd\x00 \xef\xbf\xbd\x00"},
|
||||||
} {
|
} {
|
||||||
t.Run(fmt.Sprintf("#%v: %v", i, tc.input), func(t *testing.T) {
|
t.Run(fmt.Sprintf("#%v: %v", i, tc.input), func(t *testing.T) {
|
||||||
require.Equal(t, tc.output, CollapseSpaces(tc.input))
|
require.Equal(t, tc.output, CollapseSpaces(tc.input))
|
||||||
|
|
Loading…
Reference in a new issue