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

时间:2013-05-21 13:02:16

标签: c#

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

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

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()));
                                    }
                                }
                            }

10 个答案:

答案 0 :(得分:12)

做一些像:

List<String> 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());

答案 1 :(得分:3)

这样的东西?

string input = "r,v,l,m";
string output = String.Join(",", input.Split(',').Where(YourLogic));

bool YourLogic(string x)
{
    return true;
}

答案 2 :(得分:3)

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

        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及更高版本。

答案 3 :(得分:2)

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()))

答案 4 :(得分:2)

String input = "r, v, l, m, ";

string itemToReplace = "v, ";

string output = input.Replace(itemToReplace, string.Empty)

答案 5 :(得分:1)

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();
}

答案 6 :(得分:1)

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

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));

答案 7 :(得分:1)

//如果要删除所有出现的项目,请说“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();

答案 8 :(得分:0)

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

offIdColl = my_Order.CustomOfferAppliedonOrder.TrimEnd(',').Split(',');

if (offIdColl.Contains(OfferID.ToString()))
{
    offIdColl.Remove(OfferID.ToString());
}

答案 9 :(得分:0)

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

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"));