Как удалить последний символ в строке в C #? - PullRequest
93 голосов
/ 19 сентября 2010

Построение строки для почтового запроса следующим образом,

  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 ]

239 голосов
/ 19 сентября 2010

Лично я бы согласился с предложением Роба, но если вы хотите удалить один (или более) определенный конечный символ (ы), вы можете использовать TrimEnd. Например.

paramstr = paramstr.TrimEnd('&');
75 голосов
/ 19 сентября 2010

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

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

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

22 голосов
/ 19 сентября 2010
string source;
// source gets initialized
string dest;
if (source.Length > 0)
{
    dest = source.Substring(0, source.Length - 1);
}
15 голосов
/ 20 января 2012

Попробуйте это:

paramstr.Remove((paramstr.Length-1),1);
13 голосов
/ 19 сентября 2010

Я бы просто не добавил его в первую очередь:

 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();
11 голосов
/ 04 марта 2013
string str="This is test string.";
str=str.Remove(str.Length-1);
7 голосов
/ 19 сентября 2010

Лучше, если вы используете 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);
 }
5 голосов
/ 19 сентября 2010

Хорошей практикой является использование 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();
1 голос
/ 30 декабря 2013
paramstr.Remove((paramstr.Length-1),1);

Это работает для удаления одного символа из конца строки. Но если я использую его для удаления, скажем, 4 символов, это не будет работать:

paramstr.Remove((paramstr.Length-4),1);

В качестве альтернативы я использовал этот подход вместо:

DateFrom = DateFrom.Substring(0, DateFrom.Length-4);
0 голосов
/ 09 июня 2014

Добавить 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(",");
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...