Quiero dividir esta línea:
string line = "First Name ; string ; firstName";
en una variedad de sus versiones recortadas:
"First Name"
"string"
"firstName"
¿Cómo puedo hacer todo esto en una sola línea? Lo siguiente me da un error "no se puede convertir el tipo void":
List<string> parts = line.Split(';').ToList().ForEach(p => p.Trim());
ForEach
funciona en la instancia actual deIEnumerable
y devuelvevoid
.Respuestas:
Tratar
Para su información, el método Foreach toma una acción (toma T y devuelve vacío) para el parámetro, y su lambda devuelve una cadena como cadena. Recortar devuelve una cadena
El método de extensión Foreach está destinado a modificar el estado de los objetos dentro de la colección. Como las cadenas son inmutables, esto no tendría efecto
Espero que ayude; o)
Cédric
fuente
ForEach
no es un método de extensión.El
ForEach
método no devuelve nada, por lo que no puede asignar eso a una variable.Utilice el
Select
método de extensión en su lugar:fuente
Porque p.Trim () devuelve una nueva cadena.
Necesitas usar:
fuente
Alternativamente intente esto:
fuente
Aquí hay un método de extensión ...
fuente
intenta usar Regex:
fuente
Split devuelve el tipo de cadena []. Escribe un método de extensión:
Me gustó su solución, así que decidí agregarla y hacerla más utilizable.
fuente
Use Regex
Resultado:
Beto
jon
hombre
francis
luke
sotavento
Beto
Explicar el patrón [,; \ s]: coincide con una aparición de cualquiera de los; o personaje espacial
fuente