验证是否输入了2个相似的名称
本文关键字:相似 2个 是否 输入 验证 | 更新日期: 2023-09-27 18:17:03
这是我的程序,但我想如果用户输入一个名称,程序将首先看到该名称是否未被保存在数组中。这是我尝试过的,我尝试过使用容器。但是失败了,它没有给出任何错误。你能给我一个简单的解决方案,如果没有,然后说什么代码的意思(我只是一个初学者)。
{
string naam;
Console.Write("geef je naam: ");
naam = Convert.ToString(Console.ReadLine());
string[] array = new string[] {naam};
while (naam != "")
{
Console.Write("geef je naam: ");
naam = Convert.ToString(Console.ReadLine());
//array[naam.Length] = Convert.ToString(Console.ReadLine());
}
if (array.Contains(naam))
{
Console.Write("naam is al toegevoegd");
}
while (naam == " ")
{
break;
}
Console.ReadLine();
}
这是我做的练习中的问题:你写一个程序请求朋友的名字。
每次添加好友时,检查该好友的名称是否。如果没有,那就停止重复朋友。
还记录了所有朋友参加聚会的费用。
聚会的价格=每位朋友10欧元。
扩展:如果一个朋友的名字已经存在于数组中,那么这个名字不会在第二次添加。
最好使用Hashset<string>
这样的数据结构。哈希集的查找次数为0(1)次,而通过迭代列表的方法应该为O(n)次。
您可能希望在将其放入哈希集之前对名称进行规范化(例如,如果您不希望它区分大小写并删除双间距等)。
var names = new HashSet<string>();
names.Add(NormaliseName("Tom"));
names.Add(NormaliseName("Peter"));
names.Add(NormaliseName("John"));
var normalisedTestName = NormaliseName("Tony");
if (names.Contains(normalisedTestName ))
{
// Already exists
}
else
{
// Doesn't exist, add to hashset
names.Add(normalisedTestName);
}
private static string NormaliseName(string name){
return name.ToLower().Trim();
}
也许你可以用一个字符串列表来做这个,然后你可以使用linQ在你的列表中搜索:
List<string> names = new List<string>();
if (names.Any(x => x.Contains(naam))
// stuff
else
names.Add(naam);
var namen = new HashSet<string>(StringComparer.InvariantCultureIgnoreCase);
bool gedaan = false;
while (!gedaan)
{
Console.Write("geef je naam: ");
var naam = Console.ReadLine().Trim();
gedaan = naam == "";
if (!gedaan)
{
if (!namen.Add(naam))
{
Console.WriteLine("naam is al toegevoegd");
}
}
};
Console.WriteLine($"totale party kosten: {namen.Count * 10} euro");
Console.ReadLine();