我想遍历数组元素(字符串数组)
I want to loop through array elements (array of string)
我尝试在 C# 中循环数组,然后使用这些元素我尝试根据 space 循环值,但它不起作用。
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);
}
}
}
输出如下:
Third Street Promenade, 1220 3rd St ,Santa Monica, CA 90401
Hi there should
我的预期输出是:
Third
Street
Promenade
1220
3rd
St
Santa
Monica
CA
90401
Hi
There
Should
我希望在 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);
}
}
尝试以下操作:
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);
首先删除所有不需要的字符,然后拆分 space。
Working Demo 在 .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 答案。
顺便说一句,您不应该手动拆分地址。您可能想为此使用库或服务,然后只使用坐标。地址乱七八糟。不靠谱。
您的问题的关键在于行:foreach (var stor in store) { .. }
您似乎希望将 store
字符串划分为单词,而实际上它是划分为单个字符。这就是字符串 - 一系列字符。
所以 2 foreach 中的作用域实际上总是只有 1 个字符,并且 "joining" 从来没有发生过。
要从字符串中获取单词,请改用 String.Split()
。阅读有关 String.Split from MSDN 的更多信息。
示例:
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
关键字更改为显式类型。这样编译器将显示您的意图与书面语法的不同之处。
我尝试在 C# 中循环数组,然后使用这些元素我尝试根据 space 循环值,但它不起作用。
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);
}
}
}
输出如下:
Third Street Promenade, 1220 3rd St ,Santa Monica, CA 90401
Hi there should
我的预期输出是:
Third
Street
Promenade
1220
3rd
St
Santa
Monica
CA
90401
Hi
There
Should
我希望在 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);
}
}
尝试以下操作:
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);
首先删除所有不需要的字符,然后拆分 space。
Working Demo 在 .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 答案。
顺便说一句,您不应该手动拆分地址。您可能想为此使用库或服务,然后只使用坐标。地址乱七八糟。不靠谱。
您的问题的关键在于行:foreach (var stor in store) { .. }
您似乎希望将 store
字符串划分为单词,而实际上它是划分为单个字符。这就是字符串 - 一系列字符。
所以 2 foreach 中的作用域实际上总是只有 1 个字符,并且 "joining" 从来没有发生过。
要从字符串中获取单词,请改用 String.Split()
。阅读有关 String.Split from MSDN 的更多信息。
示例:
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
关键字更改为显式类型。这样编译器将显示您的意图与书面语法的不同之处。