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

Android Studio中判断URL有效性的if-else逻辑运行异常是什么原因?

问题原因

  • 输入内容获取时机错误
    你将String webUrl = urlScan.getText().toString()写在了onCreate生命周期方法中,只会在Activity初始化时读取一次输入框内容,此时用户还没有输入内容,拿到的是空值,点击按钮时也不会重新获取用户最新输入的内容。
  • 正则匹配逻辑错误
    equals()方法用于判断两个字符串的内容是否完全相等,你当前的逻辑是把用户输入和正则表达式的字符串本身做相等对比,自然不可能匹配成功,判断字符串是否符合正则规则需要使用matches()方法。

修正后代码

TextView tv;
EditText urlScan;
Button btn;
private static final String EXAMPLE_DOT_COM = "[a-z]+[\\.]{1}[a-z]{2,3}";

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    tv = findViewById(R.id.tv);
    urlScan = findViewById(R.id.webInput);
    btn = findViewById(R.id.btn);

    btn.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            // 点击按钮时再获取最新的输入内容
            String webUrl = urlScan.getText().toString().trim();
            // 使用matches方法做正则匹配
            if (webUrl.matches(EXAMPLE_DOT_COM)){
                tv.setText("Valid URL");
            }
            else {
                tv.setText("Invalid");
            }
        }
    });
}

补充说明

如果需要支持输入带大写字母的域名(比如Google.com),可以在获取输入后先转成小写,或者修改正则规则增加大写字母的匹配范围。

内容的提问来源于stack exchange,提问作者Get_ Maths

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.01 10:39:05