2010-08-20 3 views
4
string.Format("{0}, {1}, {2}", var1, var2, var3) 

Je souhaite appliquer le codage d'URL sur chacune des variables var1, var2 et var3. Ce n'est pas un tableau, donc je ne peux pas utiliser Linq Aggregate pour le faire.C# Application de la même fonction à différentes variables

Des idées?

Je détesterais devoir mettre des parenthèses autour de chacune des variables.

+1

Si ce n'est pas un tableau qui est-il? –

Répondre

7

Si vous ne voulez pas mettre UrlEncode(...) autour de chaque argument ou définir une fonction d'assistance, la seule façon est de rendre explicite tableau créé implicitement et appliquer la méthode à chaque élément:

var args = new[] { var1, var2, var3 }; 
Array.ConvertAll(args, UrlEncode); 
var result = string Format("{0}, {1}, {2}", args); 

ou

var args = new[] { var1, var2, var3 }; 
var result = string Format("{0}, {1}, {2}", args.Select(UrlEncode).ToArray()); 

ou, si tout ce que vous voulez faire est de mettre des virgules entre les éléments:

var result = string.Join(", ", new[] { var1, var2, var3 }.Select(UrlEncode)); 

En utilisant une fonction d'assistance:

var result = string.Format("{0}, {1}, {2}", UrlEncodeAll(var1, var2, var3)); 

ou

var result = string.Join(", ", UrlEncodeAll(var1, var2, var3)); 

string[] UrlEncodeAll(params string[] args) 
{ 
    Array.ConvertAll(args, UrlEncode); 
    return args; 
} 
+0

+1 Vraiment sympa. –

1
void EncodeAndFormat(string format, params object[] args) 
{ 
    return string.Format(format, 
      args.Select(obj=>HttpUtility.UrlEncode(obj.ToString()).ToArray()); 
} 


EncodeAndFormat("{0}, {1}, {2}", var1, var2, var3) 
Questions connexes