遍历字符串数组,但仅打印具有值的元素?

时间:2018-12-07 14:06:38

标签: c# arrays string loops

我有一个包含24个元素的字符串数组。这些24代表一箱苏打水。首先将询问用户要放入哪种类型的苏打水。可以是一个,20个或全部24个。

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

我如何最好地做到这一点?

谢谢!

*编辑,谢谢大家,许多好工具,我会从这里尝试!

6 个答案:

答案 0 :(得分: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);
}

答案 1 :(得分:0)

我想先检查一下数组是否为空。如果为空,请不要打印。

否则,因为我假设您要向包装箱中添加苏打水,所以只需在数组的长度范围内构建“ for”语句即可。

即使您使用的是foreach,您仍然可以跳过其中没有任何内容的对象,只需检查其值,如果其值为null / empty,则将其跳过。

答案 2 :(得分:0)

这怎么样?

 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);
         });

答案 3 :(得分:0)

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

E。 g。:

List<string> crate = new List<string>;

...

string sodaselection = YourLogicForSelectingASoda();

if (!string.IsNullOrEmpty(sodaselection))
{
    crate.Add(sodaselection);
}

答案 4 :(得分:0)

string[] sodaCrate = new string[24];
foreach (string s in sodaCrate)
{
    if (string.IsNullOrEmpty(s))
        continue;
    //do the stuff you want
}

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

答案 5 :(得分:0)

这将解决您的问题

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