• android edittext正则表达式限制输入内容


    android studio版本21.2.1

    例程:LimitInputText

    完成日期:2022.12.1

    其实这人不是我写的,之前在用到这个的时候在网上找的,本来想转载,但当时没写,再想写的时候发现找不到了,不好意见,剽窃人家劳动成果,如果原作者看到了请联系我,我再改。

    我之前在学习Python的时候“努力”学习过正则表达式,功能非常强大,但很难学,很难记。这次又碰到了,很多东西想不起来了,拿过来用吧。我对他这个方法理解不深,只能照写,也算备忘。

    建立项目的事就不讲了,只把代码贴出来。

    新建空白布局项目。

    新建一个类LimitInputTextWatcher:

    1. package com.example.limitinputtext;
    2. import android.text.Editable;
    3. import android.text.TextWatcher;
    4. import android.widget.EditText;
    5. public class LimitInputTextWatcher implements TextWatcher {
    6. private EditText et = null;
    7. private String regex;
    8. // 默认的筛选条件(正则:只能输入中文)
    9. private String DEFAULT_REGEX = "[^\u4E00-\u9FA5]";
    10. //下面只可输入 数字、大小写字母和汉字.特殊字符不行.
    11. //private String DEFAULT_REGEX = "[^a-zA-Z0-9\u4E00-\u9FA5]";
    12. // 构造方法
    13. public LimitInputTextWatcher(EditText et) {
    14. this.et = et;
    15. this.regex = DEFAULT_REGEX;
    16. }
    17. //构造方法
    18. public LimitInputTextWatcher(EditText et, String regex) {
    19. this.et = et;
    20. this.regex = regex;
    21. }
    22. @Override
    23. public void beforeTextChanged(CharSequence charSequence, int i, int i1, int i2) {
    24. }
    25. @Override
    26. public void onTextChanged(CharSequence charSequence, int i, int i1, int i2) {
    27. }
    28. @Override
    29. public void afterTextChanged(Editable editable) {
    30. String str = editable.toString();
    31. String inputStr = clearLimitStr(regex, str);
    32. et.removeTextChangedListener(this);
    33. // et.setText方法可能会引起键盘变化,所以用editable.replace来显示内容
    34. editable.replace(0, editable.length(), inputStr.trim());
    35. et.addTextChangedListener(this);
    36. }
    37. // 清除不符合条件的内容
    38. private String clearLimitStr(String regex, String str) {
    39. return str.replaceAll(regex, "");
    40. }
    41. }

    在布局里面入一个edittext控件。activity_main.xml文件内容:

    1. "1.0" encoding="utf-8"?>
    2. <androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
    3. xmlns:app="http://schemas.android.com/apk/res-auto"
    4. xmlns:tools="http://schemas.android.com/tools"
    5. android:layout_width="match_parent"
    6. android:layout_height="match_parent"
    7. tools:context=".MainActivity">
    8. <EditText
    9. android:id="@+id/editTextTextPersonName"
    10. android:layout_width="wrap_content"
    11. android:layout_height="wrap_content"
    12. android:ems="10"
    13. android:inputType="textPersonName"
    14. android:minHeight="48dp"
    15. android:text="内容"
    16. android:textSize="20sp"
    17. app:layout_constraintBottom_toBottomOf="parent"
    18. app:layout_constraintEnd_toEndOf="parent"
    19. app:layout_constraintHorizontal_bias="0.497"
    20. app:layout_constraintStart_toStartOf="parent"
    21. app:layout_constraintTop_toTopOf="parent"
    22. app:layout_constraintVertical_bias="0.597" />
    23. androidx.constraintlayout.widget.ConstraintLayout>

    mainactivity.java内容:

    1. package com.example.limitinputtext;
    2. import androidx.appcompat.app.AppCompatActivity;
    3. import android.os.Bundle;
    4. import android.widget.EditText;
    5. public class MainActivity extends AppCompatActivity {
    6. private EditText inputText;
    7. @Override
    8. protected void onCreate(Bundle savedInstanceState) {
    9. super.onCreate(savedInstanceState);
    10. setContentView(R.layout.activity_main);
    11. inputText=(EditText)findViewById(R.id.editTextTextPersonName);
    12. inputText.addTextChangedListener(new LimitInputTextWatcher(inputText));
    13. }
    14. }

    这样这个文本输入框内就只能输入汉字,输入其他任何字符文本框都不认。

  • 相关阅读:
    Stable Diffusion WebUI几种解决手崩溃的方法
    电商风控系统(flink+groovy+flume+kafka+redis+clickhouse+mysql)
    【记录】IntelliJ IDEA实用的插件
    【Unity】渲染性能开挂GPU Animation, 动画渲染合批GPU Instance
    ArcGIS:如何利用站点数据(例如臭氧)进行克里金插值得到连续臭氧表面?
    Linux内核UART串口子系统驱动框架详解
    APP备案流程详细解读
    【服务治理】服务熔断、服务降级、服务限流、流量削峰、错峰
    CSS整理
    力扣每日一题 1106. 解析布尔表达式
  • 原文地址:https://blog.csdn.net/kim5659/article/details/128167765