Last active
November 25, 2019 12:59
-
-
Save umpteenthdev/fcf01e24c54e19650e4ec648ba234ccf to your computer and use it in GitHub Desktop.
Android input filter implemented using regular expressions
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| import android.text.InputFilter | |
| import android.text.Spanned | |
| abstract class SuggestedInputFilter : InputFilter { | |
| override fun filter(source: CharSequence, start: Int, end: Int, dest: Spanned, dstart: Int, dend: Int): CharSequence? { | |
| val suggestedResult = dest.replaceRange(dstart, dend, source) | |
| val cancelResult = dest.slice(dstart until dend) | |
| return if (accept(suggestedResult)) null else cancelResult | |
| } | |
| abstract fun accept(suggestedResult: CharSequence): Boolean | |
| } | |
| class RegexInputFilter(private val pattern: Regex) : SuggestedInputFilter() { | |
| override fun accept(suggestedResult: CharSequence): Boolean = pattern.matches(suggestedResult) | |
| } |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment