概述
android studio版本21.2.1
例程:LimitInputText
完成日期:2022.12.1
其实这人不是我写的,之前在用到这个的时候在网上找的,本来想转载,但当时没写,再想写的时候发现找不到了,不好意见,剽窃人家劳动成果,如果原作者看到了请联系我,我再改。
我之前在学习Python的时候“努力”学习过正则表达式,功能非常强大,但很难学,很难记。这次又碰到了,很多东西想不起来了,拿过来用吧。我对他这个方法理解不深,只能照写,也算备忘。
建立项目的事就不讲了,只把代码贴出来。
新建空白布局项目。
新建一个类LimitInputTextWatcher:
package com.example.limitinputtext;
import android.text.Editable;
import android.text.TextWatcher;
import android.widget.EditText;
public class LimitInputTextWatcher implements TextWatcher {
private EditText et = null;
private String regex;
// 默认的筛选条件(正则:只能输入中文)
private String DEFAULT_REGEX = "[^u4E00-u9FA5]";
//下面只可输入 数字、大小写字母和汉字.特殊字符不行.
//private String DEFAULT_REGEX = "[^a-zA-Z0-9u4E00-u9FA5]";
// 构造方法
public LimitInputTextWatcher(EditText et) {
this.et = et;
this.regex = DEFAULT_REGEX;
}
//构造方法
public LimitInputTextWatcher(EditText et, String regex) {
this.et = et;
this.regex = regex;
}
@Override
public void beforeTextChanged(CharSequence charSequence, int i, int i1, int i2) {
}
@Override
public void onTextChanged(CharSequence charSequence, int i, int i1, int i2) {
}
@Override
public void afterTextChanged(Editable editable) {
String str = editable.toString();
String inputStr = clearLimitStr(regex, str);
et.removeTextChangedListener(this);
// et.setText方法可能会引起键盘变化,所以用editable.replace来显示内容
editable.replace(0, editable.length(), inputStr.trim());
et.addTextChangedListener(this);
}
// 清除不符合条件的内容
private String clearLimitStr(String regex, String str) {
return str.replaceAll(regex, "");
}
}
在布局里面入一个edittext控件。activity_main.xml文件内容:
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".MainActivity">
<EditText
android:id="@+id/editTextTextPersonName"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:ems="10"
android:inputType="textPersonName"
android:minHeight="48dp"
android:text="内容"
android:textSize="20sp"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintHorizontal_bias="0.497"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintVertical_bias="0.597" />
</androidx.constraintlayout.widget.ConstraintLayout>
mainactivity.java内容:
package com.example.limitinputtext;
import androidx.appcompat.app.AppCompatActivity;
import android.os.Bundle;
import android.widget.EditText;
public class MainActivity extends AppCompatActivity {
private EditText inputText;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
inputText=(EditText)findViewById(R.id.editTextTextPersonName);
inputText.addTextChangedListener(new LimitInputTextWatcher(inputText));
}
}
这样这个文本输入框内就只能输入汉字,输入其他任何字符文本框都不认。
最后
以上就是哭泣麦片为你收集整理的android edittext正则表达式限制输入内容的全部内容,希望文章能够帮你解决android edittext正则表达式限制输入内容所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复