如何在科特林中使用正则表达式获取整数?

How to get integer with regular expression in kotlin?

ViewModel

fun changeQty(textField: TextFieldValue) {
    val temp1 = textField.text
    Timber.d("textField: $temp1")
    val temp2 = temp1.replace("[^\d]".toRegex(), "")
    Timber.d("temp2: $temp2")
    _qty.value = textField.copy(temp2)
}

文本字段

                OutlinedTextField(
                    modifier = Modifier
                        .focusRequester(focusRequester = focusRequester)
                        .onFocusChanged {
                            if (it.isFocused) {
                                keyboardController?.show()
                            }
                        },
                    value = qty.copy(
                        text = qty.text.trim()
                    ),
                    onValueChange = changeQty,
                    label = { Text(text = qtyHint) },
                    singleLine = true,
                    keyboardOptions = KeyboardOptions(
                        keyboardType = KeyboardType.Number,
                        imeAction = ImeAction.Done
                    ),
                    keyboardActions = KeyboardActions(
                        onDone = {
                            save()
                            onDismiss()
                        }
                    )
                )

设置KeyboardType.Number,显示1,2,3,4,5,6,7,8,9和,。 - space。 我只想得到像 -10 或 10 或 0 这样的整数。 但我输入 , 或 。或 -(不是前面的标志),它按原样显示。

例如) 键入 = -10----------

希望=-10

显示=-10--------

我把正则表达式放在

val temp2 = temp1.replace("[^\d]".toRegex(), "")

但是,它似乎不起作用。 我怎么只能得到整数(也是负整数)?

使用此正则表达式 (?<=(\d|-))(\D+) 替换所有非数字字符,除了第一个 -

fun getIntegersFromString(input: String): String {
    val pattern = Regex("(?<=(\d|-))(\D+)")
    val formatted = pattern.replace(input, "")
    return formatted
 }

Check it here