C# 创建不区分大小写的用户登录函数
例如,如果用户注册并键入“Nathan”,当他尝试登录时,他会改为写“Nathan”,我如何才能使该单词中的“大字”被忽略?通常,此类问题的解决方法如下:C# 创建不区分大小写的用户登录函数,c#,forms,xamarin,C#,Forms,Xamarin,例如,如果用户注册并键入“Nathan”,当他尝试登录时,他会改为写“Nathan”,我如何才能使该单词中的“大字”被忽略?通常,此类问题的解决方法如下: if (a.ToLower() == b.ToLower()) { } 或者在注册他时,将其另存为小写 更新 如果两个字符串都使用ToLower(),那么一些字母是否有大写字母并不重要。每个字母都是小写的,字符串都是相同的(请自己试试)。 更好的解决方案是在用户输入时将登录名存储在数据库中,并在检查登录名时使用ToLower(),请参见
if (a.ToLower() == b.ToLower())
{
}
或者在注册他时,将其另存为小写
更新
如果两个字符串都使用ToLower(),那么一些字母是否有大写字母并不重要。每个字母都是小写的,字符串都是相同的(请自己试试)。
更好的解决方案是在用户输入时将登录名存储在数据库中,并在检查登录名时使用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();
或
那么,为什么不使用适当的比较器/比较呢 如果您只想测试两个字符串 如果您想要一个集合,比如说
字典
,请提供一个比较器:
这可能会对您有所帮助:在比较用户输入之前,您可以将其设置为小写:
input.ToLower()
?只需将用户输入和存储值转换为类似的格式,如将两者转换为ToLower-ot-ToUpper。我如何使其在u键入大字母或不键入大字母时都能工作?现在它只有一种作用。你试过我的解决方案吗?这个问题结束了吗?好的。当我不使用大写字母登录时,它可以工作,但反过来不行。字符串CapsUser=App.ourUsername.ToLower();字符串CapsUserHigh=App.ourUsername.ToUpper();使用“下”或“上”。如果要匹配2个字符串,请将两者转换为lower/upper和match。你是如何比较用户名和存储值的?嗯,好的。我使用一个名为:yourEmail(xaml中的x:name)的标签注册,当我输入“email”时,我有一个名为:App.ourUsername的字符串,我应该在“登录”按钮中这样做:string CapsUserHigh=yourEmail.Text.ToUpper()?我无法让它工作。如果(String.Equals(App.ourUsername,yourEmail.Text,StringComparison.invariantCultureInogoreCase)){//do login}或者{//do login and display some message}这个方法比较两个字符串并忽略大小写,那么它应该可以工作,或者使用起来更简单。找不到:“InvariantCultureInogoreCase”好的,当我用一个小写字母而不是一个大写字母字符串CapsUser=App.ourUsername.ToLower();string CapsUserHigh=App.ourUsername.ToUpper();@DiddanDo为什么要使用ToUpper()
?你应该同时使用ToLower())
像Majkl saidHm一样好的。我用一个名为:yourEmail(x:name在xaml中)的标签注册,当我输入我的“email”时,我有一个名为:App.ourUsername的字符串,我应该在“登录”按钮中这样做吗:string CapsUserHigh=yourEmail.Text.ToUpper();?我无法让它工作。。
string lowerString = name.ToLower();
String a = "Nathan";
String b = "naTHaN";
if (String.Equals(a, b, StringComparison.InvariantCultureIgnoreCase)) {
...
}
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)) {
...
}