Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/261.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 创建不区分大小写的用户登录函数_C#_Forms_Xamarin - Fatal编程技术网

C# 创建不区分大小写的用户登录函数

C# 创建不区分大小写的用户登录函数,c#,forms,xamarin,C#,Forms,Xamarin,例如,如果用户注册并键入“Nathan”,当他尝试登录时,他会改为写“Nathan”,我如何才能使该单词中的“大字”被忽略?通常,此类问题的解决方法如下: if (a.ToLower() == b.ToLower()) { } 或者在注册他时,将其另存为小写 更新 如果两个字符串都使用ToLower(),那么一些字母是否有大写字母并不重要。每个字母都是小写的,字符串都是相同的(请自己试试)。 更好的解决方案是在用户输入时将登录名存储在数据库中,并在检查登录名时使用ToLower(),请参见

例如,如果用户注册并键入“Nathan”,当他尝试登录时,他会改为写“Nathan”,我如何才能使该单词中的“大字”被忽略?

通常,此类问题的解决方法如下:

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)) { 
    ...
  }