Код содержит два метода.
- Main , который запрашивает ввод данных пользователем и печатает подсписок на основе указанного ввода пользователя.
- Метод Извлечь передает запрос из пользовательского ввода и добавляет все индексы к
dbQueryList
для извлечения из dbListing
и печати в виде запроса.
Как добавить к List
на основе пользовательского ввода?
Основной проблемой является оператор if
, который содержит условиеi.Substring(0, query.Length) = query
.Это предназначено для проверки условия «если часть запроса существует в каком-либо индексе в dbListing
, добавьте элементы в dbQueryList
».
Первоначально я написал это на Python, и он отлично работал.Я изучаю C # и не уверен, как изменить это if
условие.Я подумывал об изменении кода и использовании LINQ в цикле foreach
, но не совсем ясно, как это реализовать.
Ждем отзывов сообщества!:)
//**************************************************
// File Name: autocomplete.cs
// Version: 1.0
// Description: Create a method that functions like an autocomplete
// API and truncates search to 5 results.
// Last Modified: 12/19/2018
//**************************************************
using System;
using System.Collections.Generic;
namespace autocomplete
{
class Program
{
private static string[] database;
private static string input;
private static string query;
static void Main(string[] args)
{
// user input to pass as query
Console.Write("Enter your query: ");
string query = Console.ReadLine();
// dynamic list comprised of 'database' array
List<string> dbListing = new List<string>();
string[] database = new string[] { "abracadara", "al", "alice", "alicia", "allen", "alter","altercation", "bob", "element", "ello", "eve", "evening", "event", "eventually", "mallory" };
dbListing.AddRange(database);
// write results based on user query
Console.WriteLine("Your results: " + Extract(Program.query));
// keep console window open after displaying results
Console.ReadLine();
}
// extract method passing query, return dbQueryList as query
public static List<string> Extract(string query)
{
// empty list is initiated
List<string> dbQueryList = new List<string>();
// foreach assesses all strings in database in main
// then, appends all indices of list equal to given query
foreach (string i in database)
{
// compares query (from index 0 to length of) to all strings in database
if (i.Substring(0, query.Length) = query)
{
// add to list above based on query
dbQueryList.Add(i);
}
// if statement truncates dbQueryList to 5 results
if (dbQueryList.Capacity >= 5)
break;
}
return dbQueryList;
}
}
ОБНОВЛЕНИЕ: 03.01.2009 18: 30
Я внес следующие изменения в Extract(query)
, и это сработало!
foreach (string i in database)
{
// compares query (from index 0 to length of) to all strings in database
if (i.StartsWith(query))
{
// add to list above based on query
dbQueryList.Add(i);
Console.WriteLine(i);
}
// if statement truncates dbQueryList to 5 results
if (dbQueryList.Capacity >= 5)
break;
}
return dbQueryList;
Очень рад, что я заставил это работать!Пожалуйста, дайте мне знать, если есть какие-либо дальнейшие отзывы о том, как улучшить и очистить этот код в случае необходимости!Всем привет!