Chcę podzielić tę linię:
string line = "First Name ; string ; firstName";
do tablicy ich skróconych wersji:
"First Name"
"string"
"firstName"
Jak mogę to wszystko zrobić w jednej linii? Następujący komunikat powoduje wyświetlenie błędu „nie można przekształcić typu void”:
List<string> parts = line.Split(';').ToList().ForEach(p => p.Trim());
ForEach
działa na bieżącym wystąpieniuIEnumerable
i zwracavoid
.Odpowiedzi:
Próbować
FYI, metoda Foreach przyjmuje Action (pobiera T i zwraca void) dla parametru, a twoja lambda zwraca ciąg jako ciąg.
Metoda rozszerzenia Foreach jest przeznaczona do modyfikowania stanu obiektów w kolekcji. Ponieważ ciąg jest niezmienny, nie miałoby to żadnego efektu
Mam nadzieję, że to pomoże; o)
Cédric
źródło
ForEach
nie jest metodą rozszerzającą.ForEach
Metoda nie zwraca niczego, więc nie można przypisać, że do zmiennej.Select
Zamiast tego użyj metody rozszerzenia:źródło
Ponieważ p.Trim () zwraca nowy ciąg.
Musisz użyć:
źródło
Alternatywnie spróbuj tego:
źródło
Oto metoda rozszerzenia ...
źródło
spróbuj użyć Regex:
źródło
Split zwraca typ string []. Napisz metodę rozszerzenia:
Spodobało mi się Twoje rozwiązanie, więc zdecydowałem się je dodać i uczynić bardziej użytecznym.
źródło
Użyj Regex
Wynik:
pion
jon
człowiek
francis
Łukasz
zawietrzny
pion
Wyjaśnij wzorzec [,; \ s]: Dopasuj jedno wystąpienie,; lub spacja
źródło