在C#中从逗号分隔的字符串中删除一个值

时间:2018-12-11 11:09:15

标签: c# linq

我做了类似的事情:

var a = "77,82,83";
foreach (var group in a.Split(','))
{
    a = group.Replace("83", string.Empty);
}

如果我想删除83但覆盖上次更新的值并输出为空或从传递给替换的值中删除值。

例如var a = 77,82,83 想要像77,82

这样的输出

修改

“ 83”可以在任何位置。

2 个答案:

答案 0 :(得分:1)

如果要输出为字符串,则不需要Split。只需获得LastIndexOf,字符,然后对变量执行Substring

var a = "77,82,83";
var newString = a.Substring(0, a.LastIndexOf(',')); // 77,82

如果不确定字符串中是否至少有一个,,则可以在执行Substring之前进行验证:

var a = "77,82,83";
var lastIndex = a.LastIndexOf(',');

if (lastIndex > 0)
    var newString = a.Substring(0, lastIndex);

更新

如果要从任何位置删除特定值:

拆分string->使用Where删除值->使用,分隔符将它们加入

a = string.Join(",", a.Split(',').Where(i => i != "83"));

这里是fiddle

答案 1 :(得分:0)

您可能需要稍微澄清一下问题,但我认为您要求以下内容:

var a = "72,82,83";
var group = a.Split(',').ToList();
int position = group.FindIndex(p => p.Contains("83"));
group.RemoveAt(position);

您可以在“包含”查询中将要查找的项目作为参数。

我认为您的原始代码存在的问题是foreach是数组中每个项目的循环,因此您尝试在每次通过时删除“ 83”。