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

时间:2015-12-17 17:26:43

标签: c# 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;
    }
}

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

2 个答案:

答案 0 :(得分:2)

我希望,我理解你的问题是正确的。 我知道您想要使用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;
        }
    }
}

答案 1 :(得分:1)

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