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

rem*_*rem 94 c# string

以下列方式为post请求构建字符串,

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

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

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

Bri*_*sen 240

就个人而言,我会选择Rob的建议,但如果你想删除一个(或多个)特定的尾随字符,你可以使用TrimEnd.例如

paramstr = paramstr.TrimEnd('&');
Run Code Online (Sandbox Code Playgroud)

  • +1是问题*标题的最简单答案* (45认同)
  • 请注意,TrimEnd将删除该字符'&'的所有尾随事件...所以如果字符串以'&&&'结尾,那么TrimEnd将删除所有3'和',而不仅仅是最后一个'&'.这可能是也可能不是OP想要的. (15认同)
  • @DougS FWIW我做了作家"删除一个(或更多)". (3认同)

Rob*_*sor 75

用它构建它string.Join:

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

string.Join接受一个seperator("&")和string数组(parameters),并在数组的每个元素之间插入分隔符.


Ste*_*end 22

string source;
// source gets initialized
string dest;
if (source.Length > 0)
{
    dest = source.Substring(0, source.Length - 1);
}
Run Code Online (Sandbox Code Playgroud)


Nel*_*eph 15

试试这个:

paramstr.Remove((paramstr.Length-1),1);
Run Code Online (Sandbox Code Playgroud)

  • 您是否会考虑稍微解释一下您的答案,以便其他人能够更好地了解您为何提出建议? (2认同)

Mar*_*ell 13

我不会在第一时间添加它:

 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();
Run Code Online (Sandbox Code Playgroud)

  • 在循环完成后,将StringBuilder的长度缩短一个也很便宜且容易. (2认同)

Alt*_*tel 11

string str="This is test string.";
str=str.Remove(str.Length-1);
Run Code Online (Sandbox Code Playgroud)


Che*_*hen 7

如果你使用它会更好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);
 }
Run Code Online (Sandbox Code Playgroud)


Dan*_*plo 5

StringBuilder在连接大量字符串时使用a是一个好习惯,然后可以使用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();
Run Code Online (Sandbox Code Playgroud)