Как удалить последний символ в строке на 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#?
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); }
Я бы просто не добавить его в первую очередь:
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.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