簡體   English   中英

如何刪除C#中字符串中的最后一個字符?

[英]How to delete last character in a string in C#?

以下列方式為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());
      }
  }

我得到產生后paramstr ,我需要刪除最后一個字符&在它

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

就個人而言,我會選擇Rob的建議,但是如果你想刪除一個(或多個)特定的尾隨字符,你可以使用TrimEnd 例如

paramstr = paramstr.TrimEnd('&');

string.Join構建它:

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

string.Join接受一個分隔符( "&" )和字符串數組( parameters ),並在數組的每個元素之間插入分隔符。

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);
 }

在連接大量字符串時使用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);

這確實可以從字符串末尾刪除單個字符。 但是,如果我用它來刪除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(",");

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM