无法获取字符串的最后一个字符

时间:2017-12-05 07:11:25

标签: c# string

enter image description here

**代码:**

String test = "32132SSS654";
char Lastchar = test[test.Length - 1];

Assert.IsTrue((Lastchar).Equals("4"));

我正在尝试从字符串中获取最后一个字符,然后执行断言但它返回了一些额外的内容,例如 52 ,最后一个字符 4 ,这就是为什么我断言获取失败。

4 个答案:

答案 0 :(得分:3)

最后一个字符是char而不是string

Assert.IsTrue((Lastchar).Equals('4'));

char文字使用单引号。

52ASCII value for the character "4"

答案 1 :(得分:2)

Lastchar的值是正确的。 52是字符4的十进制表示/值(请参阅ASCII table)。它只是一个特定于调试的显示器。

答案 2 :(得分:2)

问题是,在Equals来电中,您要将charstring进行比较(&#34; 4&#34; ):< / p>

char Lastchar = test[test.Length - 1];
Assert.IsTrue((Lastchar).Equals("4"));

返回false,因为类型不同。如果您与&#39; 4&#39; char进行比较,则会返回true:

Assert.IsTrue((Lastchar).Equals('4'));

答案 3 :(得分:1)

52是 character-4 的ASCII值,你将它错误地与"4"进行比较,这是一种字符串类型。

在C#中,将值用双引号括起来是一个字符串值。当您将它们放在单引号中,这些引号变为char值并且在单引号内时,您可以放置​​任何单个 char值。

将您的代码更改为 -

Assert.IsTrue((Lastchar).Equals('4'));

Assert不仅可以比较值,还可以比较对象的类型是否相等。所以,如果你比较像 -

这样的话
Assert.IsTrue((4).Equals('4'));

会返回false,因为它将int值与一个永远不会相等的char值进行比较。