如何验证字符串包含完整子串及Android邮箱验证逻辑调整
嘿,这两个字符串验证的问题我来帮你搞定!
问题1:如何验证一个字符串是否包含另一个完整的字符串?
在Java(包括Android开发常用的Java/Kotlin)里,最直接且高效的方法就是用String类自带的contains()方法。它会检查调用它的字符串中是否存在指定的完整子字符串,返回一个布尔值(true表示包含,false表示不包含)。
举个简单的例子:
String mainString = "我爱Android开发"; String targetSubString = "Android"; boolean isContained = mainString.contains(targetSubString); // 这里会返回true
如果你的场景需要忽略大小写(比如不区分"android"和"Android"),可以先把两个字符串都转成小写(或大写)再判断:
boolean isContainedIgnoreCase = mainString.toLowerCase().contains(targetSubString.toLowerCase());
或者用正则表达式实现更灵活的匹配:
import java.util.regex.Pattern; // 使用Pattern.quote()避免目标子串中的特殊字符干扰正则 boolean isContainedIgnoreCase = Pattern.compile(Pattern.quote(targetSubString), Pattern.CASE_INSENSITIVE) .matcher(mainString) .find();
问题2:Android平台下修改EditText的验证逻辑,检查输入文本是否包含指定完整字符串
你原来的代码是验证邮箱是否以stud.ase.ro结尾,现在要改成检查输入内容是否包含某个完整子串,只需要调整判断条件即可。我帮你修改了原代码,同时优化了一些细节:
private boolean validation() { // 先trim掉输入文本的前后空格,避免空格干扰判断 String emailStr = etEmail.getText().toString().trim(); // 第一步:检查是否为空 if (emailStr.isEmpty()) { etEmail.setError(getResources().getString(R.string.eroareEmpty)); return false; } // 定义你需要检查的目标完整子字符串(这里用你原来的stud.ase.ro为例,可替换成你需要的内容) String requiredSubStr = "stud.ase.ro"; // 第二步:检查输入文本是否包含目标子串 if (!emailStr.contains(requiredSubStr)) { etEmail.setError(getResources().getString(R.string.eroareEmail)); return false; } // 如果还需要保留长度检查,可以取消下面的注释(根据你的需求调整长度阈值) // if (emailStr.length() <= 15) { // etEmail.setError(getResources().getString(R.string.eroareLength)); // 记得在strings.xml里添加对应的错误提示 // return false; // } return true; }
关键说明:
- 先调用
trim():避免用户输入前后空格导致的误判(比如输入" test@stud.ase.ro ",trim后变成"test@stud.ase.ro",contains()就能正确识别包含stud.ase.ro)。 emailStr.contains(requiredSubStr):不管目标子串在输入文本的开头、中间还是结尾,只要完整存在就会返回true。- 如果需要忽略大小写,同样可以用转小写的方式:
!emailStr.toLowerCase().contains(requiredSubStr.toLowerCase())。
内容的提问来源于stack exchange,提问作者Miki
相关产品推荐
相关产品推荐

