我有这样的事情:获取字符串数组的子字符串的最佳方法是什么?
string[] split = ListOfUsers.Split(new Char[] { ';', ',', ' ' });
在“拆分”每个字符串的开头有一个“@”符号,我想摆脱它。如果没有进入for循环,那么获取此数组的子字符串的理想方法是什么?我可以使用Linq吗?
为寻找谢谢:)
我有这样的事情:获取字符串数组的子字符串的最佳方法是什么?
string[] split = ListOfUsers.Split(new Char[] { ';', ',', ' ' });
在“拆分”每个字符串的开头有一个“@”符号,我想摆脱它。如果没有进入for循环,那么获取此数组的子字符串的理想方法是什么?我可以使用Linq吗?
为寻找谢谢:)
有所做的正是这一点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();
选择返回IEnumerable
@ sweaver2112:谢谢你的收获,增加了一个明确的数组转换。可能的额外修剪是所有解决方案的问题,我已经提到过。 – Jon 2012-02-23 09:47:51
不需要使用LINQ,因为您可以使用将在'@上分割的'Split'重载,并删除空条目。 – Oded 2012-02-23 09:50:05
可能只是添加
ListOfUsers.Split(new Char[] { ';', ',', ' ', '@' })
所以每串子将有你需要的字符串。
var split = ListOfUsers.Split(new Char[] { ';', ',', ' ' });
var cleaned = split.Select(s => s.Substring(1));
除了修整,作为乔恩建议您可以使用正则表达式:
Regex regex = new Regex("@\\w*");
var userNames = regex.Matches(ListOfUsers).OfType<Match>().Select(x => x.Value);
您可以使用与string.replace( “@”, “”)在google上查找string.Replace()方法..吨的例子 – MethodMan 2012-02-23 09:38:39