我想从字符串中删除逗号分隔值..
假设我有一个像这样的字符串
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()));
}
}
}
答案 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"));