如何实现一个只有digits
和一个'.'
的可视转换。这就是我尝试实现的方法,但得到偏移错误:
class NumberTransformer : VisualTransformation {
override fun filter(text: AnnotatedString): TransformedText {
var out = ""
var dotCount = text.count { it == '.' }
text.forEach {
if (it.isDigit())
out += it.toString().convertToEnglish()
if (it == '.' && dotCount == 0) {
dotCount++
out += it
}
}
val numberOffsetTranslator = object : OffsetMapping {
override fun originalToTransformed(offset: Int): Int {
return offset - dotCount
}
override fun transformedToOriginal(offset: Int): Int {
return offset + dotCount
}
}
return TransformedText(
text = AnnotatedString(out),
offsetMapping = numberOffsetTranslator
)
}
}
1条答案
按热度按时间rkkpypqq1#
在这种情况下,最好使用
onValueChange
参数,通过正则表达式模式限制允许的字符。类似于: