Я хочу найти индекс / смещение пакета ключевых слов в данном текстовом файле.Теперь я сталкивался со многими вопросами по stackoverflow, но ответ этот один подходит мне лучше всего.
Единственная проблема здесь заключается в том, что вышеуказанные вопросы обеспечивают решение только для одного ключевого слова, в то время какУ меня есть более 25 ключевых слов для поиска, и я думаю, что должно быть лучшее решение, чем писать switch...case
или if...else
для каждого ключевого слова.
Как я могу оптимизировать свою задачу здесь?Любой лучший подход, кроме связанного вопроса, также приветствуется.
Допустим, мой текстовый файл имеет следующее содержимое:
Стивен Харен, декабрь, 9,4055551235
Лора Клаузинг, январь 23,4054447788
Уильям Коннор, декабрь 13,123456789
Кара Мари, октябрь, 23,1593574862
Одри Кэррит, 16 января,1684527548
Себастьян Бейкер, октябрь, 23,9184569876
И ключевые слова, которые я хочу найти:
декабрь, январь, март, апрель, май
Теперь выходные данные должны быть:
Декабрь: 16
Январь: общий индекс January
в строке 2
Декабрь: общий индекс January
в строке 3
....
Текущий код:
class Program
{
static void Main(string[] args)
{
var keyword = "December";
var keyword2 = "January";
int totalLength = 0;
using (var sr = new StreamReader("file.txt"))
{
while (!sr.EndOfStream)
{
var line = sr.ReadLine();
if (String.IsNullOrEmpty(line)) continue;
if (line.IndexOf(keyword, StringComparison.CurrentCultureIgnoreCase) >= 0)
{
Console.WriteLine("December: " + (totalLength + line.IndexOf(keyword, StringComparison.CurrentCultureIgnoreCase)));
}
if (line.IndexOf(keyword2, StringComparison.CurrentCultureIgnoreCase) >= 0)
{
Console.WriteLine("January: " + (totalLength + line.IndexOf(keyword, StringComparison.CurrentCultureIgnoreCase)));
}
.................
........................................................
totalLength += line.Length;
}
}
}
}
Примечание: Tagging Java
здесь также, поскольку я интересуюсь подходом, а не языковым решением.