我写了一个函数,在收到文本后,返回建议/类似的单词到结果。返回字符串列表。我将此功能与文本框TEXT更改连接。
例如,当我将汽车放入文本框时,我的函数会返回一个包含汽车,火星(火星)的字符串列表是simmilar一词,sb可能会写错字。)
我想制作类似autocompletemoe.suggest,但文本框应该显示此列表中的每个单词,而不仅仅是相同的字母。
例如:
它应该如何运作? 当我把车放入文本框 TEXTBOX应该为我建议:汽车,火星
它是如何工作的? 当我把车放入文本框 TEXTBOX仅为我建议汽车
我有
my_textbox.AutoCompleteCustomSource = my_AutoCompleteStringCollection;
my_textbox.AutoCompleteSource = AutoCompleteSource.CustomSource;
my_textbox.AutoCompleteMode = AutoCompleteMode.Suggest
嗯,也许我会以其他方式描述它。
让我们假设这个方法
List<String> GiveSimmilar(string ABC_word)
存在并且它将所有类似的单词返回到&#39; ABC_word&#39;。 我有一个名为&#34; query_text&#34;的文本框控件。 来自MainForm的代码段
private AutoCompleteStringCollection suggestions;
private void Main_Form_Load(object sender, EventArgs e){
// ...
suggestions = new AutoCompleteStringCollection();
query_text.AutoCompleteCustomSource = suggestions;
query_text.AutoCompleteSource = AutoCompleteSource.CustomSource;
query_text.AutoCompleteMode = AutoCompleteMode.Suggest;
// ...
}
private void query_text_TextChanged(object sender, EventArgs e){
suggestions.Clear();
if(string.IsNullOrWhiteSpace(query_text)) return;
List<string> suggest = GiveSimmilar(query_text.Text);
foreach (string sug in suggest){
suggestions.Add(sug);
Console.WriteLine(sug);
}
}
答案 0 :(得分:0)
你的问题通过定期表达来解决, (对不起我的英语,我正在努力:))
使用System.Text.RegularExpressions;
namespace MyNameSpace
{
class GetAuto
{
public GetAuto()
{
string text = "cars";
foreach (var item in GetAutoComplete(text))
{
Console.WriteLine(item);
}
}
private List<string> GetAutoComplete(string text)
{
var lookForSimilarities = Regex.Match(text,"ars");
var autoComplete = new List<string>();
if (lookForSimilarities.Success)
{
autoComplete.Add("cars");
autoComplete.Add("mars");
autoComplete.Add("wars");
autoComplete.Add("tarso");
}
return autoComplete;
}
}
}
我在这做什么?让我解释一下
用这段代码我说 &#34;嘿,搜索所有类似的&#34; ars&#34;&#34;
var lookForSimilarities = Regex.Match(text,"ars");
&#34;如果您发现了类似内容,请将所有内容添加到列表&#34;
if (lookForSimilarities.Success)
{
autoComplete.Add("cars");
autoComplete.Add("mars");
autoComplete.Add("wars");
autoComplete.Add("tarso");
}
&#34;返回结果&#34;
return autoComplete;
&#34;进行迭代,并在控制台中显示结果(但在您的情况下不是控制台)&#34;
foreach (var item in GetAutoComplete(text))
{
Console.WriteLine(item);
}