如何删除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(",");