Construire une chaîne pour une demande de publication de la manière suivante,
var itemsToAdd = sl.SelProds.ToList();
if (sl.SelProds.Count() != 0)
{
foreach (var item in itemsToAdd)
{
paramstr = paramstr + string.Format("productID={0}&", item.prodID.ToString());
}
}
après avoir obtenu le résultat paramstr
, je dois supprimer le dernier caractère &
dedans
Comment supprimer le dernier caractère d'un chaîne en utilisant C #?
le construire avec string.Join
au lieu:
var parameters = sl.SelProds.Select(x=>"productID="+x.prodID).ToArray();
paramstr = string.Join("&", parameters);
string.Join
prend un séparateur ("&"
) et un tableau de chaînes (parameters
) et insère le séparateur entre chaque élément du tableau.
Personnellement, j'irais avec la suggestion de Rob, mais si vous voulez supprimer un (ou plusieurs) caractère (s) de fin spécifique, vous pouvez utiliser TrimEnd
. Par exemple.
paramstr = paramstr.TrimEnd('&');
string source;
// source gets initialized
string dest;
if (source.Length > 0)
{
dest = source.Substring(0, source.Length - 1);
}
Essaye ça:
paramstr.Remove((paramstr.Length-1),1);
Je voudrais juste ne pas l'ajouter en premier lieu:
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);
C'est mieux si vous utilisez 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);
}
Il est recommandé d'utiliser un StringBuilder
lors de la concaténation de nombreuses chaînes. Vous pouvez ensuite utiliser la méthode Remove pour supprimer le dernier caractère.
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);
Cela fonctionne pour supprimer un seul caractère de la fin d'une chaîne. Mais si je l'utilise pour supprimer, disons, 4 caractères, cela ne fonctionne pas:
paramstr.Remove((paramstr.Length-4),1);
Au lieu de cela, j'ai utilisé cette approche à la place:
DateFrom = DateFrom.Substring(0, DateFrom.Length-4);
Ajouter un 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;
}
puis utilisez:
yourStringBuilder.RemoveLast(",");