Sto tentando di filtrare un elenco di stringhe in base al numero di parole in ogni stringa. Suppongo che si possa ritagliare qualsiasi spazio bianco all'estremità della stringa e quindi contare il numero di spazi rimasti nella stringa, in modo che WordCount = NumberOfSpaces + 1. sia il modo più efficiente per farlo? So che per il filtraggio basato sul conteggio dei caratteri il seguente funziona bene ... non riesco a capire come scriverlo in modo succinto usando C#/LINQ.Filtraggio di una stringa in base al numero di parole
if (checkBox_MinMaxChars.Checked)
{
int minChar = int.Parse(numeric_MinChars.Text);
int maxChar = int.Parse(numeric_MaxChars.Text);
myList = myList.Where(x =>
x.Length >= minChar &&
x.Length <= maxChar).ToList();
}
Qualche idea di conteggio parole?
UPDATE: Il tutto ha funzionato come un fascino ... Grazie Mathew:
int minWords = int.Parse(numeric_MinWords.Text);
int maxWords = int.Parse(numeric_MaxWords.Text);
sortBox1 = sortBox1.Where(x => x.Trim().Split(new char[] { ' ' }, StringSplitOptions.RemoveEmptyEntries).Count() >= minWords &&
x.Trim().Split(new char[] { ' ' }, StringSplitOptions.RemoveEmptyEntries).Count() <= maxWords).ToList();
Grazie Mathew ... Il seguente ha funzionato come un fascino! – Jeagr
int minWords = int.Parse (numeric_MinWords.Text); int maxWords = int.Parse (numeric_MaxWords.Text); sortBox1 = sortBox1.Where (x => x.Trim(). Split (nuovo char [] {''}, StringSplitOptions.RemoveEmptyEntries) .Count()> = minWords && x.Trim(). Split (nuovo char [] {''}, StringSplitOptions.RemoveEmptyEntries) .Count() <= maxWords) .ToList(); – Jeagr
Un metodo del genere è più efficiente dell'utilizzo delle query LINQ? – Jeagr