2009-10-23 12 views

Répondre

16

ce n'est pas Semble votre vrai problème; si vous voulez supprimer ce "% 20", vous devez utiliser:

string test = "the%20matrix%20"; 
string clean = HttpUtility.UrlDecode(test); 

if (clean.Length > 2) // if you still want to strip last chars... 
    clean = clean.Substring(0, clean.Length - 3); 
+1

+1 Pour m'avoir enseigné quelque chose que je ne connaissais pas (UrlDecode) et aussi donner une solution à ce qui est probablement le vrai problème ici. –

1

Vous devez d'abord vérifier que la chaîne comporte au moins 3 caractères.

if (y.Length > 2) 
{ 
} 

Comme d'autres ont dit que la version de Substring vous voulez paramètres sont startIndex et length. Mais que voulez-vous faire avec des chaînes de caractères à 1 ou 2 caractères?

3

Vous voulez

y.Substring(0, y.Length-4) 
2

Si vous voulez supprimer les trois derniers caractères, vous devez le premier paramètre de votre méthode de sous-chaîne à zéro.

+1

cette réponse est mauvaise, trop - c'est le problème droit, mais il obtenir tout, mais le dernier caractère ... – tanascius

4

Comme dit dalovega, vous devez le premier paramètre de Substring à 0 et la deuxième longueur - 3. Comme alternative:

if(y.Length >= 3) 
{ 
    y = y.Remove(y.Length - 3) 
} 
+0

depuis qu'il a dit: « toute chaîne » cela semble fonctionner très bien, ne avez pas besoin de faire la UrlDecoding. –

+0

Bon point - bien repéré! –

-1

string.Remove (string.LastIndexOf ("stringTo"));

+1

Ce n'est pas exactement "n'importe" chaîne. –

0

J'ai trouvé cet article à partir d'une recherche que je recherchais. J'ai eu un délimiteur que je construisais avec un constructeur de chaîne, et concat et je voulais supprimer le dernier délimiteur.

var delim = "{somedelimiter}"; 
var sb = new StringBuilder(); 
//concat the values into one string 
foreach (var val in values) 
{ 
    sb.Append(val); 
    sb.Append(delim); 
} 
var finalValue = sb.ToString(); 
finalValue = finalValue.Remove(finalValue.Length - delim.Length); 
Questions connexes