Je veux diviser cette ligne:
string line = "First Name ; string ; firstName";
dans un tableau de leurs versions limitées:
"First Name"
"string"
"firstName"
Comment puis-je faire tout cela sur une seule ligne? Ce qui suit me donne une erreur "impossible de convertir le type void":
List<string> parts = line.Split(';').ToList().ForEach(p => p.Trim());
Essayer
List<string> parts = line.Split(';').Select(p => p.Trim()).ToList();
Pour votre information, la méthode Foreach prend une action (prend T et renvoie void) comme paramètre et votre lambda renvoie une chaîne sous la forme chaîne.Trim renvoie une chaîne
La méthode d'extension Foreach est destinée à modifier l'état des objets de la collection. Comme les chaînes sont immuables, cela n'aurait aucun effet
J'espère que ça aide; o)
Cédric
La méthode ForEach
ne renvoie rien, vous ne pouvez donc pas l'affecter à une variable.
Utilisez plutôt la méthode d'extension Select
:
List<string> parts = line.Split(';').Select(p => p.Trim()).ToList();
Parce que p.Trim () retourne une nouvelle chaîne.
Vous devez utiliser:
List<string> parts = line.Split(';').Select(p => p.Trim()).ToList();
Sinon, essayez ceci:
string[] parts = Regex.Split(line, "\\s*;\\s*");
essayez d'utiliser Regex:
List<string> parts = System.Text.RegularExpressions.Regex.Split(line, @"\s*;\s*").ToList();
Voici une méthode d'extension ...
public static string[] SplitAndTrim(this string text, char separator)
{
if (string.IsNullOrWhiteSpace(text))
{
return null;
}
return text.Split(separator).Select(t => t.Trim()).ToArray();
}
Split renvoie le type de chaîne []. Ecrire une méthode d'extension:
public static string[] SplitTrim(this string data, char arg)
{
string[] ar = data.Split(arg);
for (int i = 0; i < ar.Length; i++)
{
ar[i] = ar[i].Trim();
}
return ar;
}