【问题标题】:ReadLine issuesReadLine 问题
【发布时间】:2013-03-20 22:23:13
【问题描述】:

我需要用 C# 制作一个包含数字和行数的控制台应用程序

x 代表任意数字

xxxx-xx-xxxxxx

或4个数字,行,2个数字,行,6个数字。

建议的方法是询问用户输入并确认用户是否没有写整数并将行放在正确的位置。

我想把它放在一个格式中,这样用户就不必自己写这些行了。

我希望自动插入行,这样用户就不必放置它们,字符串的长度也总是相同的。 (0-13 或 14 个字符)

这可以通过任何相当简单的方式完成吗?

编辑: 我写了代码并将其添加到pastebin(因为这里放的时间很长)

此代码接受字符串输入并确保没有输入无效字符,换句话说,它可以工作,但我希望程序以任何方式将“-”放置在它们应该自动出现的位置。并且能够限制您可以输入的字符数量(包括行数为 14 个)也很好。

我的主要问题是能够自动放置“-”,同时仍然能够使用退格键。

对不起,如果代码是原始的,它是一个学校项目,我还在学习。这是他们“希望我”使用的方法。

【问题讨论】:

  • 我已经编辑了你的标题。请参阅“Should questions include “tags” in their titles?”,其中的共识是“不,他们不应该”。
  • 到目前为止您尝试过什么?你能发布一些代码吗? Stack Overflow 不会为您编写代码。
  • line 我假设你的意思是dash character。请准确回答您的问题。
  • 是的,添加 100~ + pt 的赏金,然后观看神奇的展开。
  • 我还没有写任何东西,起初我只是想知道它是否可能。但是我会写一些代码并在我完成后回来查看,如果这里没有回复,那么我会将其添加到主帖

标签: c# string console int readline


【解决方案1】:

您可以尝试这样的事情(硬编码为长度为 14 的字符串,在位置 4 和 7 处带有破折号)。它将拦截用户的所有输入并检查它是否是数字。如果它是一个数字,它会将其打印出来并将其添加到输入中。此外,当输入长度达到某个点时,它会打印出一个破折号。

     String input = "";
     while (input.Length < 14)
     {
        char c = Console.ReadKey(true).KeyChar;
        if (c >= 48 && c <= 57) // ASCII code for a digit (between 0 and 9)
        {
           input += c; // add digit to input
           Console.Write(c); // output it to the console
        }
        if (input.Length == 4 || input.Length == 7)
        {
           input += "-";
           Console.Write("-"); // add dash to the input and write it to console
        }
     }

【讨论】:

  • 这几乎是完美的,但不允许我使用退格。并且也不允许我在 14 个字符内写下我想要的所有内容,然后按 Enter(我只能按 0 到 9 之间的数字)我发现退格的 ascii 代码是“9”,但这并没有多大帮助。添加一个或仍然会算作一个额外的字符,不错的尝试!谢谢 :) 我学到了一些东西。对我来说,只需在它们所属的位置添加“-”就足够了,尽管允许用户输入错误的字符,但无论如何我都必须用 if 来验证它们。
  • 为什么要允许用户输入无效字符?
  • 这并不重要,程序的全部目的是确保在任何地方都没有输入无效字符。如果不存在制作无效字符的选项,则无需测试。我只是最重要的是需要能够使用退格键擦除已写入的内容,并在我写入后输入以确认字符串(我不想在我写入设定数量的字符后自动跳入代码)跨度>
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-11-07
  • 1970-01-01
  • 1970-01-01
  • 2017-08-15
相关资源
最近更新 更多