包含<>()在匹配时不返回true

时间:2012-12-13 20:56:42

标签: c# string contains

我有一个字符串

String input = "nbfs;jlt;\"";

使用此字符串我使用.Contains<>()

if (input.Contains<String>("nbfs;jlt;"))
{
    Console.WriteLine("True");
}

 if (input.Contains("nbfs;jlt;"))
    {
        Console.WriteLine("True");
    }

不起作用。 为什么上面的if语句返回false?

4 个答案:

答案 0 :(得分:3)

input.Contains<String>("nbfs;jlt;")期待枚举字符串。

使用:input.Contains("nbfs;jlt;")

修改
为了响应许多注释,.Contains<T>方法不会在标准字符串上编译:

string input = "nbfs;jlt;";
input.Contains<String>("nbfs;jlt;") // this will never compile

.Contains<T>方法期望某些类型的可枚举输入(如下所示)进行编译:

input.Select( x => x.ToString() ).Contains<String>( "nbfs;jlt;" )

鉴于OP正在说代码编译,我建议打开一个新的Console Project并从头开始。并输入所有内容,不要复制/粘贴。

旁注:从文件复制/粘贴时可能隐藏了一些奇怪的实体字符,因此这可能是Contains方法无法对字符串起作用的一个原因。

编辑2
这将根据您的示例字符串编译并返回true。将其复制/粘贴到控制台应用程序中,并确保不要在控制台应用程序中包含除默认程序集以外的任何程序集:

string input = "nbfs;jlt;\"";

bool isContained = input.Contains( "nbfs;jlt;" );

Console.WriteLine( isContained );

答案 1 :(得分:2)

除非您使用某种扩展方法,否则不会使用.Contains<String>进行编译?这可能是你不知道的自定义类吗?

你应该只使用包含input.Contains("string");

的内置字符串

答案 2 :(得分:0)

只需删除<String>并使用:if (input.Contains("nbfs;jlt;"))

即可

答案 3 :(得分:0)

String.Contains isn't a generic method,因此您无需指定类型参数。

试试这个。

if (input.Contains("nbfs;jlt;"))
{
    Console.WriteLine("True");
}