从List <string>中删除部分字符串

时间:2016-05-09 06:16:06

标签: c# linq select

我有一个List<string>,字符串部分代表我需要过滤掉的文件名:在角色&#39;&amp;&#39;之前出现的任何内容。包含必须删除。

List<string> zippedTransactions = new List<string>();
zippedTransactions.Add("33396&20151007112154000549659S03333396SUMMARIES.PDF");
zippedTransactions.Add("33395&20151007112400000549659S03333395SUMMARIES.PDF");
zippedTransactions.Add("33397&20151007112555000549659S03333397SUMMARIES.PDF");

// desired output:
// "20151007112154000549659S03333396SUMMARIES.PDF";
// "20151007112400000549659S03333395SUMMARIES.PDF";
// "20151007112555000549659S03333397SUMMARIES.PDF"

注意:我不想给它带来经典的迭代式外观,因为C#提供了大量的功能接口来与这种数据结构进行交互,我想开始使用它。

6 个答案:

答案 0 :(得分:6)

这是一个使用RegEx的Linq方法

Transactions = Transactions.Select(x => Regex.Replace(x, ".*&", string.Empty)).ToList();

如果您的文件名中没有Split('&')[1],那么与&相比,它的容错能力更强

答案 1 :(得分:0)

以下代码可以帮助您

for (int i = 0; i < zippedTransactions.Count; i++)
{
    string[] result = zippedTransactions[i].Split('&');
    zippedTransactions[i] = result[result.Length-1];
}

答案 2 :(得分:0)

使用string.Split将字符串拆分为所需的字符并检索所需的部分:

foreach (var item in zippedTransactions)
{
    string[] result = item.Split('&');
    Console.WriteLine(result[1]);
}

答案 3 :(得分:0)

试试这个

for (int i = 0; i < zippedTransactions.Count; i++)
                {
                   zippedTransactions[i] = zippedTransactions[i].Split('&')[1]; 
                }

答案 4 :(得分:0)

您可以使用string.IndexOf函数查找字符串中字符的位置,然后使用string.Remove删除到该点的字符:

http.conf

答案 5 :(得分:0)

如果你碰巧有视觉工作室和支持C# Interactive的版本,我建议你尝试一下。

> zippedTransactions = new List<string>() { 
    "33396&20151007112154000549659S03333396SUMMARIES.PDF", 
    "33395&20151007112400000549659S03333395SUMMARIES.PDF", 
    "33397&20151007112555000549659S03333397SUMMARIES.PDF"
  };
> 
> zippedTransactions.Select(dirname => dirname.Split('&')[1])
Enumerable.WhereSelectListIterator<string, string> { "20151007112154000549659S03333396SUMMARIES.PDF", "20151007112400000549659S03333395SUMMARIES.PDF", "20151007112555000549659S03333397SUMMARIES.PDF" }
> 

即使你不这样做,你也可以通过查看代码来了解正在发生的事情。

WhereSelectListIterator是一个数据结构,包含您打算在数据结构上执行的逻辑。只有当你使用它时才会对它进行评估(读取:循环实际发生)(例如,在结束时调用.ToList())。

此代码只会在“&amp;”上拆分字符串后才会显示第二个元素,因此您可能需要对其进行概括或根据您的要求进行调整。