【问题标题】:Loop through a string array but only print the elements with value? [closed]循环遍历字符串数组但只打印具有值的元素? [关闭]
【发布时间】:2018-12-07 14:06:37
【问题描述】:

我有一个包含 24 个元素的字符串数组。这些 24 代表一箱苏打水。用户将首先被询问用户想要放入什么类型的苏打水和多少苏打水。可以是 1、20 或全部 24。

然后我想要一个选项,以便用户可以打印出箱子内的内容,我可以使用 for/foreach 循环来执行此操作,但我也可以打印出空的,即使它们在控制台上是空白的当然,但我要么只想要打印出具有值的元素,而不是空格,或者空格说是空的!

我怎样才能最好地做到这一点?

谢谢!

*编辑,谢谢你们,有很多好的回答者,我会从这里尝试我的方式!

【问题讨论】:

  • 能否请您为大家提供一下到目前为止您做了什么?

标签: c# arrays string loops


【解决方案1】:

您可以使用 LINQ Where 检查集合的某些元素是否满足条件。

using System.Linq;

var items = new string[] {"Cola", "", "Fanta", null, "Sprite", " "};

string[] nonEmptyItems = items.Where(i => !string.IsNullOrWhiteSpace(i)).ToArray();

foreach(var nonEmpty in nonEmptyItems) {
    Console.WriteLine(nonEmpty);
}

【讨论】:

    【解决方案2】:

    我会说首先检查数组是否为空。如果它是空的,就不要打印它。

    否则,只需根据数组的长度构建“for”语句,因为我假设您将苏打水添加到板条箱中。

    即使您使用的是 foreach,您仍然可以跳过其中没有任何内容的那些,只需检查它们的值,如果它为 null/空,则跳过它。

    【讨论】:

      【解决方案3】:

      这是怎么回事?

       var values = new []
                  {
                      "v1", "v2", null, "v4"
                  }.ToList();
      
                  var withValues = values.Where(v => !string.IsNullOrEmpty(v)).ToList();
      

      这只会返回带有值的项目。

      要写入控制台,请执行以下操作

        values.Where(v => !string.IsNullOrEmpty(v)).ToList().ForEach(v =>
               {
                   Console.WriteLine(v);
               });
      

      【讨论】:

        【解决方案4】:
        string[] sodaCrate = new string[24];
        foreach (string s in sodaCrate)
        {
            if (string.IsNullOrEmpty(s))
                continue;
            //do the stuff you want
        }
        

        这会遍历您的汽水箱,检查条目是否为空或为空,如果是则继续下一个。

        【讨论】:

        • 谢谢!这个看起来更简单(我对 c# 很陌生),这就像一个魅力!
        • 很高兴它成功了!所有其他选项都使用称为 LINQ 的东西,如果使用得当,它实际上是一个非常强大的机制,所以如果您正在寻找有趣的东西来学习,您可能想检查一下(尽管在这种情况下,LINQ 选项实际上效率略低)。祝你的项目好运!
        【解决方案5】:

        只需使用代表特定用户选择的List<string>。一旦用户选择了一种苏打水,就将该类型添加到您的列表中。

        E. g.:

        List<string> crate = new List<string>;
        
        ...
        
        string sodaselection = YourLogicForSelectingASoda();
        
        if (!string.IsNullOrEmpty(sodaselection))
        {
            crate.Add(sodaselection);
        }
        

        【讨论】:

        • 这如何帮助 OP 过滤掉空条目?
        • @HimBromBeere 这种方法应该向 OP 表明最好只收集需要的东西,而不是携带可能包含空值的固定长度数组
        【解决方案6】:

        这会解决你的问题

        foreach(var data in items.Where(i => !string.IsNullOrWhiteSpace(i))) {
            Console.WriteLine(data);
        }
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2020-03-08
          • 1970-01-01
          • 1970-01-01
          • 2021-09-22
          • 1970-01-01
          • 2023-03-23
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多