Как удалить последний символ в строке в С#?
Построение строки для почтового запроса следующим образом:
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
, мне нужно удалить последний символ &
в нем
Как удалить последний символ в строке с помощью С#?
Ответы
Ответ 1
постройте его вместо string.Join
:
var parameters = sl.SelProds.Select(x=>"productID="+x.prodID).ToArray();
paramstr = string.Join("&", parameters);
string.Join
принимает разделитель ("&"
) и массив строк (parameters
) и вставляет разделитель между каждым элементом массива.
Ответ 2
Лично я бы пошел с предложением Rob, но если вы хотите удалить один (или более) специфический символ (-ы), вы можете использовать TrimEnd
. Например.
paramstr = paramstr.TrimEnd('&');
Ответ 3
string source;
// source gets initialized
string dest;
if (source.Length > 0)
{
dest = source.Substring(0, source.Length - 1);
}
Ответ 4
Попробуйте следующее:
paramstr.Remove((paramstr.Length-1),1);
Ответ 5
Я бы просто не добавил его в первую очередь:
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();
Ответ 6
string str="This is test string.";
str=str.Remove(str.Length-1);
Ответ 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);
}
Ответ 8
Хорошей практикой является использование 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();
Ответ 9
paramstr.Remove((paramstr.Length-1),1);
Это работает, чтобы удалить один символ из конца строки. Но если я использую его для удаления, скажем, 4 символов, это не сработает:
paramstr.Remove((paramstr.Length-4),1);
В качестве альтернативы я использовал этот подход:
DateFrom = DateFrom.Substring(0, DateFrom.Length-4);
Ответ 10
Добавьте 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(",");