如何高效检测文本框中是否包含域名后缀且避免重复代码?
高效检测文本框中的域名后缀
当然有更高效的写法啦!你原来的代码重复调用Contains确实有点冗余,而且后续要加新的域名后缀时,还得不断追加Or语句,维护起来很麻烦。
首先得明确:.NET里的String.Contains方法不支持直接传入多个参数,所以你想写成If textbox1.Text.Contains(".org", ".com", ...)这种形式是不行的,但我们可以用更优雅的方式实现需求:
方法一:用数组存储后缀 + LINQ的Any方法
把所有要检测的域名后缀放到一个数组里,然后通过LINQ的Any方法来判断文本框内容是否包含其中任意一个后缀,代码如下:
' 把需要检测的后缀集中管理,后续加新后缀直接改数组就行 Dim domainSuffixes As String() = {".org", ".com", ".net", ".us", ".edu"} If domainSuffixes.Any(Function(s) TextBox1.Text.Contains(s)) Then Browser.Load(TextBox1.Text) End If
这种写法的好处很明显:
- 避免了重复写
TextBox1.Text.Contains(...)的冗余代码 - 后缀集中存储,后续维护(新增/删除后缀)只需要修改数组,逻辑清晰
方法二:支持大小写不敏感的检测
如果需要兼容用户输入大写后缀(比如.COM、.ORG)的场景,可以改用IndexOf方法并指定忽略大小写的规则:
Dim domainSuffixes As String() = {".org", ".com", ".net", ".us", ".edu"} If domainSuffixes.Any(Function(s) TextBox1.Text.IndexOf(s, StringComparison.OrdinalIgnoreCase) >= 0) Then Browser.Load(TextBox1.Text) End If
这样不管用户输入的是小写还是大写后缀,都能准确检测到。
内容的提问来源于stack exchange,提问作者Ineffable
相关产品推荐
相关产品推荐

