2012-12-13 155 views
-5

返回true我有一个字符串包含<>()不匹配

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

有了这个字符串我使用。载<>()

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

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

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

+4

这可能是因为您正在查找的字符串不存在于输入字符串中...... – Charleh

+2

您是否试图编译此代码? –

+0

@Charleh对不起,这是写错误的问题。 –

回答

3

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

使用:

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

.Contains<T>方法需要某种类型的枚举:input.Contains("nbfs;jlt;")

编辑
在应对许多意见,.Contains<T>方法将无法在一个标准的字符串编译输入如下进行编译:

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

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

附注:从文件复制/粘贴时可能会隐藏一些奇怪的实体字符,所以这可能是Contains方法不适用于您的字符串的原因之一。

编辑2
这将编译并根据您的示例字符串返回true。复制/粘贴到这个控制台应用程序,并确保不包含比默认的与控制台应用程序之外的任何组件:

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

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

Console.WriteLine(isContained); 
+0

好吧不好在新项目中重写这个,然后在这里回复结果。 –

+0

确定重写它没有复制+粘贴,仍然返回false –

+0

请参阅编辑2 - 样本将返回true。 –

2

这不会与.Contains<String>编译,除非你有某种你正在使用的扩展方法?这可能是你不知道的习惯课吗?

你应该只使用字符串的内置包含input.Contains("string");

+0

'删除分号和它的工作'我不会工作,因为它是不可编译的 –

+0

随着OP的编辑,这是不正确的,但我正在谈论的字符串他正在检查包含的内容 –

+0

它的检查'nbfs; jlt;'''nbfs; jlt;'不应该包含函数在那种情况下返回true? –

0

只是删除<String>及用途:if (input.Contains("nbfs;jlt;"))

+0

这不起作用仍然会返回错误 –

+0

奇怪 - 它适用于我并返回'true' ...如果它是一部分如果'input'具有您期望的值,请使用调试器对其进行检查。 – mj82

+0

iv使用瘦身测试我的代码版本和逐行调试,它仍然跳过if语句,即使它应该是真 –

0

String.Contains isn't a generic method,所以你不” t需要指定一个类型参数。

试试这个。

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

这仍然不会返回true –

相关问题