C# 从用户输入句子,确定并按字母顺序显示非重复单词
官方问题:编写一个控制台应用程序,输入用户的句子(假设没有标点符号),然后确定并按字母顺序显示不重复的单词。对大写字母和小写字母的处理相同。[提示:您可以使用不带参数的string方法Split,如在句子.Split()中,将句子拆分为包含单个单词的字符串数组。默认情况下,Split使用空格作为分隔符。在LINQ查询的select和orderby子句中使用string方法ToLower可获得每个单词的小写版本。] 这就是我到目前为止所做的:C# 从用户输入句子,确定并按字母顺序显示非重复单词,c#,linq,var,C#,Linq,Var,官方问题:编写一个控制台应用程序,输入用户的句子(假设没有标点符号),然后确定并按字母顺序显示不重复的单词。对大写字母和小写字母的处理相同。[提示:您可以使用不带参数的string方法Split,如在句子.Split()中,将句子拆分为包含单个单词的字符串数组。默认情况下,Split使用空格作为分隔符。在LINQ查询的select和orderby子句中使用string方法ToLower可获得每个单词的小写版本。] 这就是我到目前为止所做的: static void Main(string[] a
static void Main(string[] args)
{ // Creates list of type string
List<string> list = new List<string>();
// Writes for sentence
Console.Write("Enter your sentence. No punctuation. : ");
// Converts console into string
string sent = (Console.ReadLine());
// Splits string into array
string[] words = sent.Split();
// Writes array to list
for (int i = 0; i < words.Length; i++)
{
list.Add(words[i]);
}
// Sorts words
var sort =
from word in list
let lowerWord = word.ToLower()
orderby lowerWord
select lowerWord;
// I assume a var query goes here to delete dup words
// Writes words
foreach (string c in sort)
{
Console.WriteLine(c);
}
}
static void Main(字符串[]args)
{//创建类型字符串的列表
列表=新列表();
//为句子写作
控制台。写(“输入你的句子,不要标点符号:”;
//将控制台转换为字符串
已发送字符串=(Console.ReadLine());
//将字符串拆分为数组
string[]words=sent.Split();
//将数组写入列表
for(int i=0;i
我不知道如何找到副本并删除它们。会吗
var unique = sort.Distinct();
为你工作?会吗
var unique = sort.Distinct();
public static IEnumerable<string> GetAlphabetizedUniqueWords(string sentence)
{
return (sentence ?? string.Empty)
.Split()
.Select(x => x.ToLowerInvariant())
.Distinct()
.OrderBy(x => x);
}
static void Main( )
{
Console.Write("Enter your sentence. No punctuation. : ");
foreach (var word in GetAlphabetizedUniqueWords(Console.ReadLine()))
Console.WriteLine(word);
}
为您工作?公共静态IEnumerable GetAlphapozeDuniqueWords(字符串句子)
public static IEnumerable<string> GetAlphabetizedUniqueWords(string sentence)
{
return (sentence ?? string.Empty)
.Split()
.Select(x => x.ToLowerInvariant())
.Distinct()
.OrderBy(x => x);
}
static void Main( )
{
Console.Write("Enter your sentence. No punctuation. : ");
foreach (var word in GetAlphabetizedUniqueWords(Console.ReadLine()))
Console.WriteLine(word);
}
{
返回(句子??字符串。空)
.Split()
.Select(x=>x.ToLowerInvariant())
.Distinct()
.OrderBy(x=>x);
}
静态空隙干管()
{
控制台。写(“输入你的句子,不要标点符号:”;
foreach(getAlphapozeDuniqueWords(Console.ReadLine())中的变量字)
控制台写入线(word);
}
公共静态IEnumerable GetAlphapozeDuniqueWords(字符串语句)
{
返回(句子??字符串。空)
.Split()
.Select(x=>x.ToLowerInvariant())
.Distinct()
.OrderBy(x=>x);
}
静态空隙干管()
{
控制台。写(“输入你的句子,不要标点符号:”;
foreach(getAlphapozeDuniqueWords(Console.ReadLine())中的变量字)
控制台写入线(word);
}
排序后,浏览列表,并将每个单词与前一个单词进行比较。如果匹配,则删除该单词。由于列表已排序,所有重复项必须相邻。排序后,遍历列表,并将每个单词与前一个单词进行比较。如果匹配,则删除该单词。由于列表已排序,所有重复项必须相邻。“官方问题:“-呃,什么?这是家庭作业吗?看看LINQ的小组。这是找到副本(或非副本,视情况而定)的最佳方法。米奇:我正试图自学几本书,我试图复习所有最后一章的问题,但这本书似乎不是很好……”官方问题:“-呃,什么?这是家庭作业吗?看看LINQ的小组。这是找到重复项(或非重复项,视情况而定)的最佳方法。米奇:我试图自学几本书,并尝试复习最后一章的所有问题,但这本书似乎不是很好……我以为在字符串方面你不能使用布尔(!=)吗?字符串有一个.Equals()方法。我以为在字符串中不能使用布尔(!=)呢?字符串有一个.Equals()方法。您介意解释一下它是如何工作的吗?我刚开始学C。这会返回一个只包含不同数字的列表吗?我不必使用查询吗?据我所知,“Distinct()”使用相同的默认比较来查找重复字符串并将其从列表中删除。在上面的用法中,它返回字符串列表(与传入的类型相同)。至于“查询”,这里没有任何东西真正符合查询的条件……您介意解释一下它是如何工作的吗?我刚开始学C。这会返回一个只包含不同数字的列表吗?我不必使用查询吗?据我所知,“Distinct()”使用相同的默认比较来查找重复字符串并将其从列表中删除。在上面的用法中,它返回字符串列表(与传入的类型相同)。至于“查询”,这里没有什么真正可以作为查询。。。