C#奇怪的字符串行为?

时间:2014-01-29 10:56:58

标签: c# string equals

我有一个字符串变量如下:

string testVar = "abc ";

然后我有if声明如下:

if(this.testVar[this.testVar.Length-1].Equals(" "))

从上面我试图找出最后一个字符是否是空格,如果它是空格然后做一些事情。但即使我的testVar = "abc "

,它总是假的

4 个答案:

答案 0 :(得分:9)

testVar[…]会返回 char ,而不是string。这就是Equals string测试始终返回false的原因。您可以通过与char进行比较来轻松解决此问题。你也不需要Equals

if (testVar[testVar.Length - 1] == ' ')

如果您最初使用==而不是Equals,那么您将得到一个解释问题的编译时错误,这一点毫无价值。这很好地说明了为什么使用早期绑定而不是后期绑定是好的(Equals需要object,因此不提供编译时类型检查。)

答案 1 :(得分:4)

为什么你不只是使用:

if (testVar.EndsWith (" ")) 

答案 2 :(得分:1)

始终为假,因为char永远不会等于string

这样可行:

if (this.testVar[this.testVar.Length-1].Equals(' '))

或者

if (this.testVar[this.testVar.Length-1] == ' ')

答案 3 :(得分:0)

检查这个家伙

var result = str.Substring(str.LastIndexOf(' ') + 1);