可以将文章内容翻译成中文,广告屏蔽插件可能会导致该功能失效(如失效,请关闭广告屏蔽插件后再试):
问题:
Building a string for post request in the following way,
var itemsToAdd = sl.SelProds.ToList(); if (sl.SelProds.Count() != 0) { foreach (var item in itemsToAdd) { paramstr = paramstr + string.Format("productID={0}&", item.prodID.ToString()); } }
after I get resulting paramstr
, I need to delete last character &
in it
How to delete last character in a string using C#?
回答1:
build it with string.Join
instead:
var parameters = sl.SelProds.Select(x=>"productID="+x.prodID).ToArray(); paramstr = string.Join("&", parameters);
string.Join
takes a seperator ("&"
) and and array of strings (parameters
), and inserts the seperator between each element of the array.
回答2:
Personally I would go with Rob's suggestion, but if you want to remove one (or more) specific trailing character(s) you can use TrimEnd
. E.g.
paramstr = paramstr.TrimEnd('&');
回答3:
string source; // source gets initialized string dest; if (source.Length > 0) { dest = source.Substring(0, source.Length - 1); }
回答4:
Try this:
paramstr.Remove((paramstr.Length-1),1);
回答5:
I would just not add it in the first place:
var sb = new StringBuilder(); bool first = true; foreach (var foo in items) { if (first) first = false; else sb.Append('&'); // for example: var escapedValue = System.Web.HttpUtility.UrlEncode(foo); sb.Append(key).Append('=').Append(escapedValue); } var s = sb.ToString();
回答6:
string str="This is test string."; str=str.Remove(str.Length-1);
回答7:
It's better if you use string.Join
.
class Product { public int ProductID { get; set; } } static void Main(string[] args) { List products = new List() { new Product { ProductID = 1 }, new Product { ProductID = 2 }, new Product { ProductID = 3 } }; string theURL = string.Join("&", products.Select(p => string.Format("productID={0}", p.ProductID))); Console.WriteLine(theURL); }
回答8:
It's good practice to use a StringBuilder
when concatenating a lot of strings and you can then use the Remove method to get rid of the final character.
StringBuilder paramBuilder = new StringBuilder(); foreach (var item in itemsToAdd) { paramBuilder.AppendFormat(("productID={0}&", item.prodID.ToString()); } if (paramBuilder.Length > 1) paramBuilder.Remove(paramBuilder.Length-1, 1); string s = paramBuilder.ToString();
回答9:
paramstr.Remove((paramstr.Length-1),1);
This does work to remove a single character from the end of a string. But if I use it to remove, say, 4 characters, this doesn't work:
paramstr.Remove((paramstr.Length-4),1);
As an alternative, I have used this approach instead:
DateFrom = DateFrom.Substring(0, DateFrom.Length-4);
回答10:
Add a StringBuilder
extension method
.
public static StringBuilder RemoveLast(this StringBuilder sb, string value) { if(sb.Length
then use:
yourStringBuilder.RemoveLast(",");