如何从HashSet List中删除“\ t”?

时间:2014-02-22 16:05:24

标签: c# winforms

private void ReadKeysValues()
        {
            if (File.Exists(@"c:\Temp\WritePostedAlready.txt"))
            {
                alreadyPost.UnionWith(File.ReadAllLines(@"c:\Temp\WritePostedAlready.txt"));
                for (int i = 0; i < alreadyPost.Count; i++)
                {
                    alreadyPost.Remove("");
                    alreadyPost.Remove("\t");
                }
            }
        }

变量alreadyPost是HashSet 我可以删除空行/ s做删除(“”); 但我无法删除以\ t开头的行/索引\ s。 执行删除(“\ t”);或(@“\ t”);没有用。

2 个答案:

答案 0 :(得分:3)

您可以使用RemoveWhere方法。

alreadyPost.RemoveWhere(p => p.StartsWith("\t"));

<强>更新

只删除每个项目中的\t字符,但保留项目(请参阅注释),您可以执行以下操作:

alreadyPost = new HashSet(
    alreadyPost.Select(p => p.StartsWith("\t") ? p.Substring(1) : p)
);

答案 1 :(得分:0)

我通常会阻止将这些项目添加到集合中,而不是之后将其删除。但是,如果您真的想要,可以使用以下代码:

foreach (var item in alreadyPost.ToList())
{
    if (item.StartsWith("\t"))
    {
        alreadyPost.Remove(item);
    }
}