我有一个文本文件,上面有这些单词的列表
笔记本电脑
激光
猛男
山姆
萨曼莎
Mulder
麦克风
土豚
我想做的是在一个单词中输入用户输入类型,控制台基本上会以我们有您的单词或我们没有您的单词为响应。到目前为止,这是我的代码:
TextReader文件=新的StreamReader(“ Files / Exercise_Files / Words.txt”);
Console.WriteLine(“欢迎使用FindWord”);
字符串wordInput;
Console.WriteLine(“输入单词,以便我们尝试找到它:”);
wordInput = Console.ReadLine();
字符串sLine = file.ReadToEnd();
如果(String.Compare(wordInput,sLine,true)== 0)
{
Console.WriteLine(“我们找到了你的话!”);
}
其他
{
Console.WriteLine(“我们没有找到您的字词”);
}
file.Dispose();
我尝试做一些版本来解决这个问题,其中包括添加for-each循环,但这让我很困惑。我不确定100%何时使用for-each循环。我还希望字符串比较不区分大小写,但是无论我输入什么,我现在的代码总是会说找不到单词。
答案 0 :(得分:1)
将文件加载到数组
string[] words = File.ReadAllLines(path);
然后使用LINQ查找
if (words.Any(w => string.Equals(w, input, StringComparison.InvariantCultureIgnoreCase)))
// do your thing here
效果Contains
与Any
包含速度更快,但是在这种情况下,由于搜索到的集合很小,因此差异将不可见。
public class Program
{
public static HashSet<string> _hs = new HashSet<String>(Enumerable.Range(1,1000).Select(x=> "Item " + x));
public static string[] _arr = Enumerable.Range(1,1000).Select(x=> "Item " + x).ToArray();
public static void Main()
{
var sw = new Stopwatch();
sw.Start();
bool f;
for (int i = 1; i < 1001; i++)
{
//f = _hs.Contains("Item " + i, StringComparer.OrdinalIgnoreCase);
f = _arr.Contains("Item " + i, StringComparer.OrdinalIgnoreCase);
}
Console.WriteLine(sw.Elapsed);
sw.Restart();
for (int i = 1; i < 1001; i++)
{
f = _hs.Any(w => string.Equals(w, "Item " + i, StringComparison.InvariantCultureIgnoreCase));
}
Console.WriteLine(sw.Elapsed);
}
}
答案 1 :(得分:1)
您可以使用File.ReadAllLines()
方法将文件行读取到数组中,然后使用Linq扩展方法Contains
来确定该列表中是否存在某个单词(您可以执行以下操作-不敏感的搜索):
static void Main(string[] args)
{
var filePath = @"c:\temp\temp.txt";
var words = File.ReadAllLines(filePath);
Console.Write("Enter a search term: ");
var searchTerm = Console.ReadLine();
if (words.Contains(searchTerm, StringComparer.OrdinalIgnoreCase))
{
Console.WriteLine("We have your word!");
}
else
{
Console.WriteLine("We do not have your word");
}
Console.ReadKey();
}
答案 2 :(得分:0)
String.Compare,比较两个字符串。我认为,您可能要使用Contains方法。请参阅下文-
if (sLine.Contains(wordInput))
{
Console.WriteLine("We have found your word!");
}
else
{
Console.WriteLine("We have not found your word");
}