字段中没有@会导致它崩溃

本文关键字:崩溃 字段 | 更新日期: 2023-09-27 18:02:17

我在电子邮件验证中遇到了一些麻烦。

我有两个变量,email和emailTrim, email存储用户输入的email地址,emailTrim由以下代码组成:

string emailTrim = email.Substring(0, email.LastIndexOf("@"));

取email变量并删除@符号之后的所有内容。这正是我想要它做的,然而,这带来了错误的副作用"ArgumentOutOfRangeException was unhandled"

是否有人可以帮助我用另一种方法来删除'@'符号之后的所有内容,或者一种方法来"处理"抛出的异常。

字段中没有@会导致它崩溃

Split()代替:

string emailTrimmed = email.Split('@')[0];

由于无论您传递什么,LastIndexOf都会返回一些值,因此您应该检查结果是否有效。

当字符串没有'@'符号时,LastIndexOf产生-1。将它传递给Substring会给你一个从0到- 1的无效范围。

下面是解决这个问题的方法:
// Find the position of '@', and store it in a variable
var pos = email.LastIndexOf("@");
// Check the position for negative value before passing it to Substring
var emailTrim = pos >= 0 ? email.Substring(0, pos) : email;