Vb.net 有没有一种方法可以创建一个可以被字符串调用的方法?

Vb.net 有没有一种方法可以创建一个可以被字符串调用的方法?,vb.net,Vb.net,我需要找出字符串是否包含一个特定的子字符串,然后根据子字符串是否存在返回一个布尔值。我可以创建一个独立函数,用于检查传递的字符串中是否存在传递的年份,如下所示: 说出pstrCompNum=“111-2233-44-555”和pstrCompYear=“33”。这将返回True,因此,我知道这个字符串中存在33 Public Function HasYear(ByVal pstrCompNum As String, ByVal pstrCompYear As String) As Boolean

我需要找出
字符串
是否包含一个特定的
子字符串
,然后根据
子字符串
是否存在返回一个
布尔值。我可以创建一个独立函数,用于检查传递的字符串中是否存在传递的年份,如下所示:

说出pstrCompNum=“111-2233-44-555”和pstrCompYear=“33”。这将返回True,因此,我知道这个字符串中存在33

Public Function HasYear(ByVal pstrCompNum As String, ByVal pstrCompYear As String) As Boolean
    Try
        Dim testString As String = pstrCompNum
        Dim testSubstring As String = testString.Substring(6, 2)
        If pstrCompYear.Equals(testSubstring) Then
            Return True
        End If
        Return False
    Catch ex As Exception
        Throw ex
    End Try
End Function
但我真正想要的是能够使用字符串调用此方法,例如,我可能会这样使用它:

If pstrCompNum.HasYear(pstrCompYear) Then
    ''something
End If
这是因为我计划将它放在一个循环中,在这个循环中,我检查每个迭代,看看字符串中是否有一年。大致如下:

Dim itHasIt As Boolean
For Each c In Name
    If c.HasYear(year) Then
        itHasIt = True
    End If
Next
或者类似的。我只是想让你明白我的想法


有什么建议可以使这项工作顺利进行吗?

是的,你可以,这些建议被称为

导入System.Runtime.CompilerServices
公共模块StringExtensionMethods
作为布尔值的公共函数HasYear(ByVal pstrCompNum作为字符串,ByVal pstrCompYear作为字符串)
Dim testString As String=pstrCompNum
Dim testSubstring As String=testString.Substring(6,2)
如果pstrCompYear.Equals(testSubstring),则
返回真值
如果结束
返回错误
端函数
端模块

太棒了,谢谢。对于其他阅读本文的人来说,你必须把这个模块放在你的类之外,不确定这是否值得一提,但我还是要说。谢谢@the_lotus@BrenCou:但在这种情况下,pstCompNum是多个不同数字的组合,我不会对字符串使用扩展方法,而是通过自身类的对象替换字符串,该对象将字符串作为构造函数参数,验证和分析它,并为每个值提供一个属性。这可能是一个好方法,但不幸的是,这不是我的应用程序,我只是被告知要增加功能。这是一个相当复杂的应用程序,修改数字的存储方式似乎是一项艰巨的工作,但(坦率地说)收获似乎微乎其微。但即使这是值得的,它超出了我工作的职责范围,我也不会决定这些事情。谢谢你的提示@BrenCou就我个人而言,我不会延期。这不是特定于字符串的方法,而是特定于该变量的方法。
Imports System.Runtime.CompilerServices

Public Module StringExtensionMethods

    <Extension()>
    Public Function HasYear(ByVal pstrCompNum As String, ByVal pstrCompYear As String) As Boolean

        Dim testString As String = pstrCompNum
        Dim testSubstring As String = testString.Substring(6, 2)

        If pstrCompYear.Equals(testSubstring) Then
            Return True
        End If

        Return False
    End Function

End Module