我做了类似的事情:
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”可以在任何位置。
答案 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”。