编写 VisualTransformation PhoneNumber 将每 3 个数字分开 space

Compose VisualTransformation PhoneNumber separate each 3 numbers by space

我正在尝试在 TextField 可组合

中进行视觉转换

示例 01111111111 -> 011 111 111 11

注意:我想在每 3 个数字后附加 space 任意长度的数字

我想出了一个公式来计算原件到转换后的偏移量,但我不知道如何反转它

val phoneNumberOffsetTranslator = object : OffsetMapping {
    override fun originalToTransformed(offset: Int): Int {
        return (i % 3) + (4 * (i.div(3)))
    }

    override fun transformedToOriginal(offset: Int): Int {
        // I couldn't figure a formula to do that
        return TODO()
    }
}

originalToTransformed()

中公式的示例输出

0 -> 0
1 -> 1
2 -> 2

3 -> 4
4 -> 5
5 -> 6

6 -> 8
7 -> 9
8 -> 10
9 -> 12
10 -> 13

很简单:

override fun transformedToOriginal(offset: Int): Int {
    return i - i.div(4)
}