String包含VB.NET中的IgnoreCase

ser*_*hio 2 .net c# vb.net string

在C#中存在一个问题:没有不区分大小写的String.Contains方法(请参阅不区分大小写的'包含(字符串)').

在VB.NET中问题是一样的,但有一个解决方法:

Dim Str As String = "UPPERlower"
Dim b As Boolean = InStr(Str, "UpperLower") 
Run Code Online (Sandbox Code Playgroud)

但是,我对它几乎没有"问题":

1)在Visual Studio 的立即窗口中,此方法显示为"未声明";

2)如何动态调用此方法(应该是"调用者"对象)?说实际上我应该这样称呼它:

expr = Expression.Call(myStringParam, "Contains", Nothing, constantExpression, Expression.Constant(StringComparison.InvariantCultureIgnoreCase))
Run Code Online (Sandbox Code Playgroud)

3)功能位于何处(谁拥有,组装)InStr

Ant*_*ram 8

(我现在看到你的问题也涉及表达式,我没有太多经验,但谢天谢地Jon Skeet可以帮助你.至于你的问题的其他部分,我的原始答案如下. )


InStr存在于里面Microsoft.VisualBasic.Strings.从C#代码调用它的一个例子

string myString = "Hello World";
int position = Microsoft.VisualBasic.Strings.InStr(myString, "world");
Run Code Online (Sandbox Code Playgroud)

当然,如果我想要一个不区分大小写的结果,我会选择IndexOf存在的重载,System.String这允许我指定一个StringComparison.

int index = myString.IndexOf("world", StringComparison.CurrentCultureIgnoreCase);
Run Code Online (Sandbox Code Playgroud)

另请注意,InStr对于找到的项目,从1 IndexOf开始,对于此类项目,从0开始.index != position在此代码段中.