【问题标题】:Remove a leading digit in c# [duplicate]删除c#中的前导数字[重复]
【发布时间】:2022-01-05 16:04:15
【问题描述】:

如何在控制台中打印:

123456
23456
3456
456
56
6

这是我编程课上的作业,我是编码新手。我知道我可以使用:

    static void Main(string[] args)
    {
        Console.WriteLine("123456");
        Console.WriteLine("23456");
        Console.WriteLine("3456");
        Console.WriteLine("456");
        Console.WriteLine("56");
        Console.WriteLine("6");

    }

但我想知道是否有更清洁、更有效的方法。

【问题讨论】:

  • 使用Console.WriteLine() 而不是Console.Write()。另外,请附上minimal reproducible example 以及您已经尝试过的内容。
  • 欢迎使用 stackoverflow。对我来说似乎是典型的homework question。你能分享一下你迄今为止尝试和研究过的东西吗?如果您被困在某个地方,我们很乐意提供帮助,但您应该首先尝试自己解决任务 - 并且能够描述您的努力。我推荐taking the tour,以及阅读how to ask a good questionwhat's on topic
  • 还有:您似乎没有删除尾随,而是删除前导数字。
  • 对于一组 NESTED for 循环来说,这看起来是一个很好的案例。外部 for 循环将从 1 变为 6。内部 for 循环将从当前外部 for 循环值变为 6。在内部 for 循环中,每个数字都带有 Console.Write(),因此它保持在同一行。在嵌套 for 循环的两个右括号之间使用 Console.WriteLine() 向下移动到下一行。
  • 查看字符串实例上的 Substring 函数

标签: c#


【解决方案1】:
    string source = "123456";
    Console.WriteLine(source);
        while(source.Length > 0) {
            source = source.Remove(0, 1);
            Console.WriteLine(source);
        }

详细说明:

while:同时条件(字符串的长度,以字符为单位)大于零,在括号内做所有事情。
然后用相同的字符串替换原始字符串,但用Remove 删除第一个字符。 0 表示:position 我开始删除,1 表示:how many characters 我将删除。 每次你Remove一个字符时,长度将接近于零,直到为零,然后while将不再为真

测试它: https://dotnetfiddle.net/7tFV0J

【讨论】:

    【解决方案2】:

    嗯,产生所需输出的一种简单、非常有效的方法是以下单行代码:

    Console.WriteLine("123456\n23456\n3456\n456\n56\n6");
    

    但是,我怀疑这是否能满足您的作业要求。使用循环的更好方法是调用string.Remove() function,并一直这样做直到字符串为空:

    using System;
    
    namespace StringRemove
    {
        class Program
        {
            static void Main()
            {
                string test = "123456";
                while (test.Length != 0) {
                    Console.WriteLine(test);
                    test = test.Remove(0,1);
                }
            }
        }
    }
    

    有关从字符串中删除第一个字符的深入讨论,请参阅:Fastest way to remove first char in a String

    【讨论】:

      【解决方案3】:
      string digits = "123456";
      for(var i = 0; i < digits.Length; i++)
         Console.WriteLine(digits.Substring(i));
      

      【讨论】:

        【解决方案4】:

        这是一个使用 cmets 中提到的嵌套 for 循环的示例:

        public static void Main (string[] args) { 
            for(int i=1; i<=6; i++) {
                for(int j=i; j<=6; j++) {
                    Console.Write(j);
                }
                Console.WriteLine();
            }
        }
        

        输出:

        123456
        23456
        3456
        456
        56
        6
        

        【讨论】:

          猜你喜欢
          • 2011-10-04
          • 2014-04-12
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2016-02-24
          • 2020-11-22
          • 2011-11-28
          相关资源
          最近更新 更多