如何从字符串中删除逗号分隔值?

我想从字符串中删除逗号分隔值..

假设我有一个像这样的字符串

string x="r, v, l, m" 

我想从上面的字符串中删除r,并像这样重写字符串

 string x="v, l, m" 

从上面的字符串我想删除我的逻辑抛出和改造字符串的任何值。 它应该删除它旁边的值和逗号并改写字符串……


下面是我的代码特有的..我想删除我从逻辑中得到的任何值,我想删除它和它旁边的逗号并重新编译已删除项目上没有空格的字符串..我怎样才能实现这个?

 offIdColl = my_Order.CustomOfferAppliedonOrder.TrimEnd(','); if (offIdColl.Split(',').Contains(OfferID.ToString())) { // here i want to perform that operation. 

}

Tombala,我这样应用它但它不起作用..返回true

  if (!string.IsNullOrEmpty(my_Order.CustomOfferAppliedonOrder)) { offIdColl = my_Order.CustomOfferAppliedonOrder.TrimEnd(','); if (offIdColl.Split(',').Contains(OfferID.ToString())) { string x = string.Join(",", offIdColl.Split(new char[] { ',' }, StringSplitOptions.RemoveEmptyEntries).ToList().Remove(OfferID.ToString())); } } } 

做一些像:

 List Items = x.Split(",").Select(i => i.Trim()).Where(i => i != string.Empty).ToList(); //Split them all and remove spaces Items.Remove("v"); //or whichever you want string NewX = String.Join(", ", Items.ToArray()); 

像这样的东西?

 string input = "r,v,l,m"; string output = String.Join(",", input.Split(',').Where(YourLogic)); bool YourLogic(string x) { return true; } 

不太确定这是不是你的意思,但这似乎最简单,最可读:

  string x = "r, v, l, m"; string valueToRemove = "r"; var result = string.Join(", ", from v in x.Split(',') where v.Trim() != valueToRemove select v); 

编辑:像Bob Sammers所指出的那样,这只适用于.NET 4及更高版本。

 String input = "r, v, l, m, "; string itemToReplace = "v, "; string output = input.Replace(itemToReplace, string.Empty) 
 var l = x.Split(new char[] { ',' }, StringSplitOptions.RemoveEmptyEntries).ToList(); l.Remove(OfferID.ToString()); x = string.Join(",", l); 

编辑:对不起,你是对的。 删除不会返回原始列表。 你需要多个陈述。 但你不需要暗中修剪“,”。 您可以从代码中删除该语句以及检查项目是否存在。 删除将在找到它时将其取出,或者如果未找到则将其返回false。 你不必检查存在。 所以从第一行中删除TrimEnd并删除下面的第二行:

 offIdColl = my_Order.CustomOfferAppliedonOrder; //.TrimEnd(','); //if (offIdColl.Split(',').Contains(OfferID.ToString())) 
 public void string Remove(string allStuff, string whatToRemove) { StringBuilder returnString = new StringBuilder(); string[] arr = allStuff.Split(''); foreach (var item in arr){ if(!item.Equals(whatToRemove)){ returnString.Append(item); returnString.Append(", "); } } return returnString.ToString(); } 

所以你想要删除一个项目(或者用一个nother值替换它)并再次用逗号连接字符串而没有空格?

 string x = "r, v, l, m,"; string value = "v"; string[] allVals = x.TrimEnd(',').Split(new []{','}, StringSplitOptions.RemoveEmptyEntries); // remove all values: x = string.Join(",", allVals.Where(v => v.Trim() != value)); // or replace these values x = string.Join(",", allVals.Select(v => v.Trim() == value ? "new value" : v)); 

//如果要删除项目的所有出现,请说“a”可以使用

  String data = "a, b, c, d, a, e, f, q, a"; StringBuilder Sb = new StringBuilder(); foreach (String item in data.Split(',')) { if (!item.Trim().Equals("a", StringComparison.Ordinal)) { if (Sb.Length > 0) Sb.Append(','); Sb.Append(item); } } data = Sb.ToString(); 

不是这样的。 你需要保留字符串吗? 我怀疑你这样做。 只需使用列表即可。 你有重复吗? 如果不:

 offIdColl = my_Order.CustomOfferAppliedonOrder.TrimEnd(',').Split(','); if (offIdColl.Contains(OfferID.ToString())) { offIdColl.Remove(OfferID.ToString()); } 

它在很多方面只有一行代码,其中两个如下:

 string x = "r,v,l,m"; string NewX = String.Join(",", from i in x.Split(',') where i != String.Empty && i != "v" select i); OR string NewX = String.Join(",", x.Split(',').Select(i => i.Trim()).Where(i => i != String.Empty && i != "v"));