操纵列表中的元素-c#
问题描述:
我有一个以下模式的字符串列表:“name \ middleName”。 什么是最好的方式变成一个列表,其中所有的元素只是“名称”? (即分割字符串,只留下了“名”的一部分)操纵列表中的元素-c#
感谢, 李
答
List<string> originalList = ...
List<string> newList = originalList.Select(s => s.Split('\\')[0]).ToList()
答
//your list of strings in format (name\middleName)
List<string> list;
List<string> newList;
foreach(string item in list)
newList.Add(item.Substring(0, item.IndexOf("\\")));
这将使你的字符串列表的副本到一个新的格式像你想。
答
Tokenize“/”并将第一个字符串分配给名称变量。 或者只是将所有这些字符串循环到列表中,并且在循环内对字符串长度进行循环,将字符串变为变量并在到达“/”时退出并将其存储为名称。
答
List<string> original = ...
List<string> nameOnly = original.ConvertAll(s => s.Substring(0, s.IndexOf('\\')));
如果有可能,有可能无法在原始列表的一些元素\
字符,那么你就需要一个额外的检查,以避免例外:
List<string> nameOnly = original.ConvertAll(s => {
int i = s.IndexOf('\\');
return (i == -1)
? s
: s.Substring(0, i);
});
答
下面是正则表达式的解决方案你没有创建一个新的列表。
for(int i = 0; i < list.count; i++)
{
list[i] = Regex.Match(List[i],@"^\w+").value
}
您可能是指'[0]'来获取'name'部分。 – 2011-05-26 16:22:32
实际上应该是元素[0],但+1是一个很好的解决方案。编辑:艾哈迈德击败了我。 :) – Rohrbs 2011-05-26 16:23:06
噢,因为某种原因,我想这个名字是在'\\'之后的。现在修复 – 2011-05-26 16:24:21