如何在RegEx和纯文本之间切换用户输入的搜索字符串

本文关键字:用户 输入 字符串 搜索 之间 RegEx 文本 | 更新日期: 2023-09-27 18:27:16

我想让用户有可能在某些数据中进行搜索。用户在文本框中输入他的搜索字符串。更高级的用户不仅应该能够输入纯文本,还应该能够输入正则表达式,以获得更好的搜索结果(并设置一个复选框来告诉我们,他已经输入了正则表达式)

我目前有这个实现,它将每个输入都视为regex。

string filter = sometextbox.Text;
Regex rgx = new Regex(filter);
for (int i = 0; i < data.Count; i++)
{
    if (rgx.IsMatch(data[i].Content))
    {
        // Found it, preset it to the user
        break;
    }
}

如何在将输入视为正则表达式或纯文本之间进行更改

如何在RegEx和纯文本之间切换用户输入的搜索字符串

我希望我理解你的问题。我知道你想使用CheckBox控件打开/关闭正则表达式搜索,你所要做的就是检查CheckBox的状态,并确定你要用来进行搜索的代码。

string filter = sometextbox.Text;
if(RegexCheckBox.IsChecked)
{
    Regex rgx = new Regex(filter);
    for (int i = 0; i < data.Count; i++)
    {
        if (rgx.IsMatch(data[i].Content))
        {
            // Found it, preset it to the user
            break;
        }
    }   
}
else
{
    for (int i = 0; i < data.Count; i++)
    {
        if(data[i] == filter)
        {
            //found it, present it to the user
            break;
        }
    }
}
string filter = sometextbox.Text;
Regex rgx = new Regex(filter);
bool IsRegEx = RegExCheckBox.Checked;
List<string> Matches = new List<string>();
for (int i = 0; i < data.Count; i++)
{
    if (IsRegEx && rgx.IsMatch(data[i].Content))
        Matches.Add(data[i].Content);
    else if (!IsRegEx && data[i].Content.ToLower().Contains(filter.ToLower())) 
        Matches.Add(data[i].Content);
}
//Do something with your list of Matches