Как удалить последний символ в строке на 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#?

5642   10  

10 ответов:

построить его с string.Join вместо:

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

string.Join берет разделитель ("&") и массив строк (parameters), и вставляет разделитель между каждым элементом массива.

лично я бы пошел с предложением Роба, но если вы хотите удалить один (или несколько) конкретных символов трейлинга, вы можете использовать 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);
 }

Это хорошая практика, чтобы использовать 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);

добавить StringBuilderextension 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(",");

Comments

    Ничего не найдено.