How to delete last character in a string in C#?

匿名 (未验证) 提交于 2019-12-03 01:25:01

问题:

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


标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!