2012-02-23 95 views
0

我有这样的事情:获取字符串数组的子字符串的最佳方法是什么?

string[] split = ListOfUsers.Split(new Char[] { ';', ',', ' ' }); 

在“拆分”每个字符串的开头有一个“@”符号,我想摆脱它。如果没有进入for循环,那么获取此数组的子字符串的理想方法是什么?我可以使用Linq吗?

为寻找谢谢:)

+0

您可以使用与string.replace( “@”, “”)在google上查找string.Replace()方法..吨的例子 – MethodMan 2012-02-23 09:38:39

回答

3

有所做的正是这一点String.Trim过载:删除字符串的开始和结束指定的字符:

string[] split = ListOfUsers.Split(new Char[] { ';', ',', ' ' }); 
string[] trimmed = split.Select(s => s.Trim('@')).ToArray(); 

如果字符串包含多个@ S IN的开头或以@结束这会比你想要的做得更多。在这种情况下,你也可以简单地使用String.Substring

string[] split = ListOfUsers.Split(new Char[] { ';', ',', ' ' }); 
string[] trimmed = split.Select(s => s.Substring(1)).ToArray(); 
+0

选择返回IEnumerable ,而不是string []。也会修剪字符串的结尾以及开始。 – sweaver2112 2012-02-23 09:45:49

+0

@ sweaver2112:谢谢你的收获,增加了一个明确的数组转换。可能的额外修剪是所有解决方案的问题,我已经提到过。 – Jon 2012-02-23 09:47:51

+0

不需要使用LINQ,因为您可以使用将在'@上分割的'Split'重载,并删除空条目。 – Oded 2012-02-23 09:50:05

0

可能只是添加

ListOfUsers.Split(new Char[] { ';', ',', ' ', '@' }) 

所以每串子将有你需要的字符串。

1
var split = ListOfUsers.Split(new Char[] { ';', ',', ' ' }); 
var cleaned = split.Select(s => s.Substring(1)); 
1

除了修整,作为乔恩建议您可以使用正则表达式:

Regex regex = new Regex("@\\w*"); 
var userNames = regex.Matches(ListOfUsers).OfType<Match>().Select(x => x.Value); 
相关问题