web-dev-qa-db-fra.com

Comment puis-je diviser et couper une chaîne en parties sur une seule ligne?

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()); 
109
Edward Tanguay

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

257
Cédric Rup

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();
21
Guffa

Parce que p.Trim () retourne une nouvelle chaîne.

Vous devez utiliser:

List<string> parts = line.Split(';').Select(p => p.Trim()).ToList();
5
Matt Breckon

Sinon, essayez ceci:

string[] parts = Regex.Split(line, "\\s*;\\s*");
3
Lawrence Phillips

essayez d'utiliser Regex:

List<string> parts = System.Text.RegularExpressions.Regex.Split(line, @"\s*;\s*").ToList();
2
user2826608

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();
    }
1
LawMan

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;
}
0
foxjazzHack