【问题标题】:Creating a Search button with regex使用正则表达式创建搜索按钮
【发布时间】:2014-04-04 08:56:36
【问题描述】:

所以我基本上是在尝试创建一个搜索按钮。

此搜索使用正则表达式。

我认为我的方法是正确的,但它不起作用,谁能告诉我我是如何/哪里出错了,不是在 AGES 中编码...

    public void SearchFunction(string searchtext)
    {
        SupporterId();
        ReferenceNumber();
        ConsignmentNumber();
    }
    private static void SupporterId()
    {
        const string sId= "";
        var supporterId = Regex.IsMatch(sId, @"^[A-F,S,R][0-9]{3,6}$", RegexOptions.IgnoreCase);
    }

    private static void ReferenceNumber()
    {
        const string refNumber = "";
        var referenceNumber = Regex.IsMatch(refNumber, @"^[ABN158][0-9]{6,17}$", RegexOptions.IgnoreCase);
    }

    private static void ConsignmentNumber()
    {
        const string conNumber = "";
        var consignmentNumber = Regex.IsMatch(conNumber, @"&[0-9]{14}$", RegexOptions.IgnoreCase);
        }
    }
}

这些是我的正则表达式,这是我背后的代码..

    protected void CheckStateClick(object sender, EventArgs e)
    {

        ConsignmentSearch();
    }

    private void ConsignmentSearch()
    {
        var searchclass = new RegexMethods();
        searchclass.SearchFunction(txtReferenceNumber.Text);
    }

谁能告诉我哪里出了问题以及如何解决它,请不要告诉我哦,你错过了这个,然后不要告诉我如何解决它。

如果你能告诉我如何/需要添加什么来修复示例:在此处添加这行代码 ....

请,谢谢。

__ 这是错误 测试“M:DeliveryInputSystem.Default.AddBox_Click(System.Object,System.EventArgs)”失败:对象引用未设置为对象的实例。 System.NullReferenceException:对象引用未设置为对象的实例。 Default.aspx.cs(113,0):在 DeliveryInputSystem.Default.AddBox_Click(Object sender, EventArgs e)

【问题讨论】:

  • 你甚至没有说你的问题是什么,“不工作”太模糊了

标签: c# regex search


【解决方案1】:

我可能是错的,但看起来你只是在检查空字符串...... 像这样检查您的搜索文本怎么样:

public void SearchFunction(string searchtext)
{
    SupporterId(searchtext);
    ReferenceNumber(searchtext);
    ConsignmentNumber(searchtext);
}
private static void SupporterId(string sId)
{
    var supporterId = Regex.IsMatch(sId, @"^[A-F,S,R][0-9]{3,6}$", RegexOptions.IgnoreCase);
}

private static void ReferenceNumber(string refNumber)
{
    var referenceNumber = Regex.IsMatch(refNumber, @"^[ABN158][0-9]{6,17}$", RegexOptions.IgnoreCase);
}

private static void ConsignmentNumber(string conNumber)
{
    var consignmentNumber = Regex.IsMatch(conNumber, @"&[0-9]{14}$", RegexOptions.IgnoreCase);  
}

但是,如果我正确理解您的代码,您的 searchtext 变量只包含 txtReferenceNumber.Text 文本,因此您应该只对其运行 ReferenceNumber(string searchtext) 方法。

【讨论】:

  • 这个方法我试过了,你写的我写了但是还是不行。
  • 下面我包含了 2 个屏幕截图,因此您可以看到我所看到的。 prntscr.com/36v0kf - prntscr.com/36v0o0
  • 有什么问题?如果我们实际上不知道问题出在哪里,没有人可以提供帮助。据我所知,您在问题中发布的空引用异常与您发布的正则表达式代码无关。
【解决方案2】:

您提供了错误文本:

__ THIS IS THE ERROR Test' 
M:DeliveryInputSystem.Default.AddBox_Click(System.Object,System.EventArgs)' failed:
Object reference not set to an instance of an object.
System.NullReferenceException:
Object reference not set to an instance of an object.
Default.aspx.cs(113,0): at DeliveryInputSystem.Default.AddBox_Click(Object sender, EventArgs e)

有书面的错误原因:NullReferenceException,它发生在哪里Default.aspx.cs(113,0)。您需要分析在Default.aspx.cs 中的113 行中存在什么,以及为什么它会导致NullReferenceException

如果您不知道从哪里开始,请从文档开始。根据MSDN documentation for NullReferenceException class

当您尝试访问值为 null 的类型的成员时,会引发 NullReferenceException 异常。

你也经常有一个例子:

1:  List<String> names;
2:  if (sth) names = new List<String>();
3:  names.Add("Major Major Major")

如果sthfalse 则没有实例分配给names 并且将引发异常。

【讨论】:

  • 我只是不明白“对象引用未设置为对象的实例”是什么意思
  • @PkinJ0r 这就是为什么你应该期望得到提示如何自己做。我用信息编辑了答案,NullReferenceException 是什么。
  • 谢谢你的提示,但我不明白什么对象引用没有设置为对象的实例,我想做的是从我的类中调用 * 正则表达式 *,所以它可以找到ID
  • 在 .text 框中 - 然后使用 SQL 中存储的协议进行搜索
  • @PkinJ0r 阅读我提供的整页文档。你在那里描述了一切。 Object reference not set to an instance of an objectNullReferenceException 的描述。
猜你喜欢
  • 2017-06-15
  • 1970-01-01
  • 2015-01-05
  • 1970-01-01
  • 2023-03-20
  • 2021-05-19
  • 2011-05-20
  • 2011-09-02
  • 1970-01-01
相关资源
最近更新 更多