繁体   English   中英

我想遍历数组元素(字符串数组)

[英]I want to loop through array elements (array of string)

我正在尝试使用C#循环数组,然后使用该元素尝试基于空间来循环值,但它不起作用。

public void Find()
{
    string[] stores = {"Third Street Promenade, 1220 3rd St ,Santa Monica, CA 90401","Hi there should"};

    foreach(var store in stores)
    {
        foreach (var stor in store)
        {
            string result = string.Join("", stor);
            Console.Write(result);
        }
    }
}


输出如下:

第三街长廊,1220 3rd St,圣莫尼卡,CA 90401
嗨,那里应该

我的预期输出是:

第三

漫步
1220
第3

圣诞老人
莫妮卡
CA
90401
你好
那里
应该

我希望结果是C#中的上述格式(我的预期输出)。

使用Split功能。

string[] stores = { "Third Street Promenade, 1220 3rd St ,Santa Monica, CA 90401", "Hi there should" };

foreach (string store in stores)
{
    var result = store.Split(' ').Select(w => w.Trim(','));

    foreach (string word in result)
    {
        Console.WriteLine(word);
    }
}

首先删除所有不需要的字符,然后按空格分割。

.NETFiddle上的工作演示

using System;
using System.Linq;
using System.Collections.Generic;


public static void Main()
{
    string[] stores = {"Third Street Promenade, 1220 3rd St ,Santa Monica, CA 90401","Hi there should"};

    Func<string, string> clean = x => new String(x.Where(c => Char.IsLetterOrDigit(c) || c == ' ').ToArray());

    var outputs = stores.SelectMany(store => clean(store).Split(' '));

    foreach (var output in outputs)
        Console.WriteLine(output);
}

我用完整的Linq答案进行了编辑。

顺便说一句,您不应该手工分割地址。 您可能要为此使用lib或服务,然后仅使用坐标播放。 地址是一团糟。 不要靠它。

请尝试以下操作:

string[] stores = { "Third Street Promenade, 1220 3rd St ,Santa Monica, CA 90401", "Hi there should" };
string[] lstSplittedStores = string.Join(" ,", stores).Split(new[] { " ", " ," }, StringSplitOptions.None);

foreach (var item in lstSplittedStores)
    Console.WriteLine(item);

解决问题的关键所在: foreach (var stor in store) { .. }您似乎希望将store字符串分割为单词,而实际上却是将其分割为单个字符。 这就是字符串-一系列字符。

因此2 foreach中的范围实际上总是只有1个字符,并且从未发生过“连接”。

要从字符串获取单词,请改用String.Split() 从MSDN中了解有关String.Split的更多信息。

例:

string[] stores = { "Third Street Promenade, 1220 3rd St ,Santa Monica, CA 90401", "Hi there should" };
char[] separators = new char[] { ' ', ',' };
foreach (String store in stores)
{
    String[] storeWords = store.Split(separators, StringSplitOptions.RemoveEmptyEntries);

    foreach (String word in storeWords)
    {
        Console.WriteLine(word);
    }
}

如果您不确定类型的用途,请将var关键字更改为显式类型。 这样,编译器将显示您的意图与书面语法的不同之处。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM