如何删除C#中的string中的最后一个字符?

按以下方式构build发布请求的string,

var itemsToAdd = sl.SelProds.ToList(); if (sl.SelProds.Count() != 0) { foreach (var item in itemsToAdd) { paramstr = paramstr + string.Format("productID={0}&", item.prodID.ToString()); } } 

在得到paramstr ,我需要删除最后一个字符

如何使用C#删除string中的最后一个字符?

使用string.Join来代替它:

 var parameters = sl.SelProds.Select(x=>"productID="+x.prodID).ToArray(); paramstr = string.Join("&", parameters); 

string.Join采用分隔符( "&" )和string( parameters )数组,并在数组的每个元素之间插入分隔符。

就个人而言,我会与罗布的build议,但如果你想删除一个(或更多)特定的尾随字符(S),你可以使用TrimEnd 。 例如

 paramstr = paramstr.TrimEnd('&'); 
 string source; // source gets initialized string dest; if (source.Length > 0) { dest = source.Substring(0, source.Length - 1); } 

尝试这个:

 paramstr.Remove((paramstr.Length-1),1); 

我只是不加它在第一个地方:

  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(); 
 string str="This is test string."; str=str.Remove(str.Length-1); 

如果你使用string.Join更好。

  class Product { public int ProductID { get; set; } } static void Main(string[] args) { List<Product> products = new List<Product>() { 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); } 

在连接大量string时使用StringBuilder是一个好习惯,然后可以使用Remove方法去除最终字符。

 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(); 
 paramstr.Remove((paramstr.Length-1),1); 

这确实可以从string的末尾删除单个字符。 但是,如果我用它来删除,例如, 4个字符,这是行不通的:

 paramstr.Remove((paramstr.Length-4),1); 

作为替代,我已经使用了这种方法:

 DateFrom = DateFrom.Substring(0, DateFrom.Length-4); 

添加一个StringBuilder extension method

 public static StringBuilder RemoveLast(this StringBuilder sb, string value) { if(sb.Length < 1) return sb; sb.Remove(sb.ToString().LastIndexOf(value), value.Length); return sb; } 

然后使用:

 yourStringBuilder.RemoveLast(",");