创建一个不区分大小写的用户登录函数
本文关键字:大小写 用户 登录 函数 不区 一个 创建 | 更新日期: 2023-09-27 18:27:47
例如,如果用户注册并键入"Nathan",而当他试图登录时,却写"Nathan",我该如何使单词中的"大字母"被忽略?
通常这样的问题解决如下:
if (a.ToLower() == b.ToLower())
{
}
或者在将他保存为小写时
更新
如果对这两个字符串都使用ToLower(),则某些字母是否具有Upper Letter并不重要。每个字母的大小写都会更低,字符串的大小写也会相同(试试看)。一个更好的解决方案是在用户输入登录信息时将登录信息存储在数据库中,ToLower()在检查登录信息时使用,参见一个明确的示例:
string registerName = "Nathan"; // in database will be "Nathan"
string loginName = "nathan"; // user try login with "nathan"
if (registerName.ToLower() == loginName.ToLower())
{// login correct
}
您可以应用java脚本,使名称始终以所需格式键入,也可以在服务器端进行验证。最好的方法是将名称转换为大写或小写,并将其与数据库中存储的条目相匹配。数据库中的结果也可以在匹配之前转换为大写或小写。
例如
string name = "Nathan";
string upperString = name.ToUpper();
或
string lowerString = name.ToLower();
为什么不使用适当的比较器/比较呢?
如果您想测试两个字符串仅
String a = "Nathan";
String b = "naTHaN";
if (String.Equals(a, b, StringComparison.InvariantCultureIgnoreCase)) {
...
}
如果您想要一个集合,比如Dictionary
,请提供比较器:
Dictionary<String, User> users =
new Dictionary<String, User>(StringComparer.InvariantCultureIgnoreCase) {
{"Me", new User(...)},
{"Nathan", new User(...)},
};
所以你可以像往常一样使用字典:
if (users.ContainsKey("nATHan")) {
..
}
if (users.TryGetValue("nathaN", out loggedUser)) {
...
}