Не работает поиск в файле слова - C#
Формулировка задачи:
Просто слово
"one"
находит, но если изменить строку на"one 1"
, то словоone
уже не находится. Полагаю, нужно добавить разделение через Split и определять пробелы, но что-то у меня не получается. Кто может помочь, буду очень благодарен.using System;
namespace ConsoleApplication1
{
class Program
{
static void Main(string[] args)
{
var cards = new Cards();
Console.WriteLine(cards.Contains("one"));
}
}
}using System.Collections.Generic;
using System.IO;
namespace ConsoleApplication1
{
class Cards
{
private const string PATH_TO_FILE = "text.txt";
private HashSet<string> cardsNumbers;
public Cards()
{
var cardsNumbersFromFile = File.ReadAllLines(PATH_TO_FILE);
cardsNumbers = new HashSet<string>(cardsNumbersFromFile);
}
public bool Contains(string value)
{
return cardsNumbers.Contains(value);
}
}
}text.txt
one 1 2 three four способ у
Решение задачи: «Не работает поиск в файле слова»
textual
Листинг программы
class Cards
{
private const string PATH_TO_FILE = "text.txt";
private HashSet<string> cardsNumbers;
public Cards()
{
var cardsNumbersFromFile = File.ReadAllLines(PATH_TO_FILE);
cardsNumbers = new HashSet<string>(cardsNumbersFromFile, new CardComparer());
}
public bool Contains(string value)
{
return cardsNumbers.Contains(value);
}
}
public class CardComparer : IEqualityComparer<string>
{
public bool Equals(string x, string y)
{
return x.StartsWith(y) || y.StartsWith(x);
}
public int GetHashCode(string obj)
{
int index = obj.IndexOf(' ');
return index > 0? obj.Remove(index).GetHashCode() : obj.GetHashCode();
}
}