Skip to content

Instantly share code, notes, and snippets.

@hleinone
Last active November 30, 2023 14:03
Show Gist options
  • Star 25 You must be signed in to star a gist
  • Fork 1 You must be signed in to fork a gist
  • Save hleinone/5b445e5475ca9f8a3bdc6a44998f4edd to your computer and use it in GitHub Desktop.
Save hleinone/5b445e5475ca9f8a3bdc6a44998f4edd to your computer and use it in GitHub Desktop.
Android EditText TextWatcher for formatting credit card number made with Kotlin
class CreditCardNumberFormattingTextWatcher : TextWatcher {
private var current = ""
override fun onTextChanged(s: CharSequence, start: Int, before: Int, count: Int) {
}
override fun beforeTextChanged(s: CharSequence, start: Int, count: Int, after: Int) {
}
override fun afterTextChanged(s: Editable) {
if (s.toString() != current) {
val userInput = s.toString().replace(nonDigits,"")
if (userInput.length <= 16) {
current = userInput.chunked(4).joinToString(" ")
s.filters = arrayOfNulls<InputFilter>(0)
}
s.replace(0, s.length, current, 0, current.length)
}
}
companion object {
private val nonDigits = Regex("[^\\d]")
}
}
@mohsenmdb
Copy link

You saved my day, Thanks man!

@hleinone
Copy link
Author

hleinone commented Jan 3, 2023

@mohsenmdb Cheers, my pleasure!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment