You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何验证字符串包含完整子串及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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.26 10:56:01