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: "🇪🇩"},
|
||||
// NB: Флаг распался. :)
|
||||
{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) {
|
||||
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 \t ", output: " "},
|
||||
{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) {
|
||||
require.Equal(t, tc.output, CollapseSpaces(tc.input))
|
||||
|
|
Loading…
Reference in a new issue