【问题标题】:Limiting a string to alphabetical letters, C#将字符串限制为字母,C#
【发布时间】:2014-04-02 18:21:20
【问题描述】:

我做了以下代码:

string fname;
Console.WriteLine("Input  employee first name:");
fname = Console.ReadLine();

这个想法是插入一个while循环(其中带有“if”)以将来自控制台的输入限制为仅限字母字母。但是,使用 Tryparse 不起作用,因为它将字符串解析为整数。我将不胜感激收到有关如何通过将字符串“尝试解析”为字符串来解决此问题的建议。

【问题讨论】:

  • 应该是哪种语言?你确定要禁止像Céline 这样的名字吗?除了日文/中文/韩文名称之外......我的建议:允许使用任何人可以发明的该死的名字,你真的不想因为无意义的任意限制而感到沮丧。
  • 这个想法是不要让某人输入类似的内容:Steve1242353。而且语言是c#,不好意思没提。
  • 所以,添加标签 C#,并解释为什么要这样做。你真正想通过这种方式完成什么?
  • 这对于基本的正则表达式来说应该足够简单了。

标签: c# regex parsing while-loop readline


【解决方案1】:

试试这个:

    Console.Write("Input  employee first name: ");
    var s = new StringBuilder();
    do
    {
        var key = Console.ReadKey(true);
        if (key.KeyChar == '\r')
            break;

        if (char.IsLetter(key.KeyChar))
        {
            Console.Write(key.KeyChar);
            s.Append(key.KeyChar);
        }
    } while (true);

    Console.WriteLine();
    Console.WriteLine( "You typed " + s.ToString());

【讨论】:

    【解决方案2】:

    正如 cmets 中有人提到你的问题,RegEx 可能是评估输入的最简单方法

    if (Regex.IsMatch("yourtexthere", "^[a-zA-Z]{1,25}$").Success) {
        // it matches                
    }
    

    这应该让你很好地了解如何完成它

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-07-03
      • 2017-12-17
      • 1970-01-01
      • 2021-11-21
      • 1970-01-01
      • 2015-04-12
      • 1970-01-01
      相关资源
      最近更新 更多