我收到以下错误:
var a = id.Substring(0,8).TrimEnd("0").Length
我想要做的是把我的字符串称为id。将其固定为八个字符,然后在取消尾随“0”后检查长度。
错误消息是:
Error 2 The best overloaded method match for 'string.TrimEnd(params char[])' has some invalid arguments
我看不出我做错了什么。有人有什么想法吗?
答案 0 :(得分:4)
您所做的是错误的,因为您将.TrimEnd()
方法传递给字符串,而不是char[]
as the documentation mentions。
您需要以下内容:
var a = id.Substring(0,8).TrimEnd(new char[]{'0'}).Length;
你甚至可以传入一个带引号的字符,使事情更具可读性。
var a = id.Substring(0,8).TrimEnd('0').Length;
答案 1 :(得分:1)
这与Substring
电话无关。这也不起作用:
// Broken
"foo".TrimEnd("0");
查看编译器错误消息 - 这将起作用:
"foo".TrimEnd('0');
如果您关注微优化,可能希望避免在每次调用时创建新数组:
private static readonly char[] ZeroForTrimming = {'0'};
...
var a = id.Substring(0,8).TrimEnd(ZeroForTrimming).Length;
答案 2 :(得分:0)
尝试围绕0的单引号:
var a = id.Substring(0, 8).TrimEnd('0').Length;
答案 3 :(得分:0)
正是它所说的,该方法需要char []而不是字符串。你最容易写
var a = id.Substring(0,8).TrimEnd("0".ToCharArray()).Length;
我添加了ToCharArray,因为有时您可能希望字符串是可变的。
请注意,除非您确定该字符串总是至少8个字符,否则您会遇到麻烦。您需要验证字符串至少与Substring的第二个参数一样长,否则您很可能会在随机时间将索引抛出范围异常。
答案 4 :(得分:0)
方法签名显示它需要任意数量的char
。您提供了string
。有关该方法的文档,请参阅here。
相反,你需要这样的东西:
var a = id.Substring(0, 8).TrimEnd('0').Length
请注意字符周围的单引号。
答案 5 :(得分:0)
TrimEnd
需要一个char数组,而不是字符串。使用单引号将char字面值写为'x'
。
var a = id.Substring(0,8).TrimEnd('0').Length;
由于TrimEnd
的参数标有params
关键字,因此您有两种传递参数的可能性:
s.TrimEnd(new char[]{'0',' ',';'})
或
s.TrimEnd('0',' ',';')
在您的情况下,这就足够了:
s.TrimEnd('0')