diff --git a/unpack.go b/unpack.go index 997b332..503a516 100644 --- a/unpack.go +++ b/unpack.go @@ -61,9 +61,9 @@ func Unpack(str string) (string, error) { } case number: if unicode.IsDigit(char) { - var n = strconv.Itoa(numOfRepeat) - numOfRepeat, _ = strconv.Atoi(n + string(char)) - repStr, err := repeatRune(runeArray[i-2], numOfRepeat) + var n = strconv.Itoa(numOfRepeat) + string(char) + numOfRepeat, _ = strconv.Atoi(n) + repStr, err := repeatRune(runeArray[i-len(n)], numOfRepeat) if err != nil { // Если функция repeatRune возвращает ошибку, удаляем последний символ из результата. res := result.String() diff --git a/unpack_test.go b/unpack_test.go index 5f7af3e..5ecf2de 100644 --- a/unpack_test.go +++ b/unpack_test.go @@ -56,6 +56,7 @@ func TestStringContainsNumber(t *testing.T) { }{ {input: "aaa10b", expected: "aaaaaaaaaaaab"}, {input: "a12b4", expected: "aaaaaaaaaaaabbbb"}, + {input: "a100", expected: "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"}, } for _, tc := range testStrings { t.Run(tc.input, func(t *testing.T) {