C# 在C中从逗号分隔的字符串中删除值#
我做过类似的事情:C# 在C中从逗号分隔的字符串中删除值#,c#,linq,C#,Linq,我做过类似的事情: var a = "77,82,83"; foreach (var group in a.Split(',')) { a = group.Replace("83", string.Empty); } 若我想删除83,但覆盖上次更新的值,并使输出为空,或删除传递给replace的值 e、 gvar a=77,82,83 想要像77,82那样的输出 编辑: “83”可以位于任何位置。如果希望以字符串形式输出,则无需拆分。只需获取,字符并对变量执行以下操作: var a =
var a = "77,82,83";
foreach (var group in a.Split(','))
{
a = group.Replace("83", string.Empty);
}
若我想删除83,但覆盖上次更新的值,并使输出为空,或删除传递给replace的值
e、 gvar a=77,82,83
想要像77,82那样的输出
编辑:
“83”可以位于任何位置。如果希望以字符串形式输出,则无需拆分。只需获取,
字符并对变量执行以下操作:
var a = "77,82,83";
var newString = a.Substring(0, a.LastIndexOf(',')); // 77,82
如果不确定该字符串是否至少有一个,
,则可以在执行子字符串之前进行验证:
var a = "77,82,83";
var lastIndex = a.LastIndexOf(',');
if (lastIndex > 0)
var newString = a.Substring(0, lastIndex);
更新:
如果要从任何位置删除特定值:
拆分字符串
->使用删除值,其中
->使用,
分隔符将它们连接起来
a = string.Join(",", a.Split(',').Where(i => i != "83"));
这里有一个你可能需要稍微澄清一下这个问题,但我认为你要求的是:
var a = "72,82,83";
var group = a.Split(',').ToList();
int position = group.FindIndex(p => p.Contains("83"));
group.RemoveAt(position);
您可以将在Contains查询中查找的项设置为参数
我认为您的原始代码存在的问题是,foreach
是数组中每个项目的循环,因此您试图在每次传递时删除“83”。您是否总是希望删除最后一个项目,或者您是否希望像“77,83”这样删除82个项目的输出?您好@adiga谢谢。如果我知道这83在两者之间呢?比如a=“77,83,82”??那我该怎么办?我只想删除字符串中任何位置的值。@KajalSawant为任何位置更新