我的问题是:我正在制作一个程序,用户可以输入自己想要的任何单词,直到写完END。
所有单词都进入相同的列表字符串
,然后从该列表中我写:
1)以“ A”开头的单词
2)以“ B”开头的单词
3)以“ C”开头的单词
4)换句话说:
也许使用linq
如果有人对初学者有一些不太复杂的解决方案,我将非常感激。 我试图找到其他没有成功的答案。
答案 0 :(得分:0)
您可以生成模式,然后按首字母对匹配项进行分组。
// Generate pattern: A|B|C
var check_words = string.Join("|", "A", "B", "C");
var re = new Regex($"^{check_words}");
// Test strings
var words = new List<string> { "Apple", "Banana", "Cucumber", "Cherry", "Watermelon" };
var filtered =
words
.Where(word => re.IsMatch(word)) //Filter words
.GroupBy(g => g.Substring(0, 1)); //Group by first letter
// Print groups
foreach(var group in filtered)
{
WriteLine($"Group: {group.Key}");
foreach(var x in group)
{
WriteLine($"\t{x}");
}
}
/*
Output:
Group: A
Apple
Group: B
Banana
Group: C
Cucumber
Cherry
*/
答案 1 :(得分:0)
var words = List(); var aWords = words.Where(w => w.ToUpper()。StartsWith(“ A”))。ToList();
这对我有用,谢谢@LasseVågsætherKarlsen
您能帮我怎么说我要不要以A,B或C开头的所有其他单词吗? 通过linq一起写?