可以';t获取子字符串,然后修剪变量
本文关键字:字符串 然后 修剪 变量 获取 可以 | 更新日期: 2023-09-27 18:19:34
我收到以下错误:
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
我看不出我做错了什么。有人有什么想法吗?
您所做的是错误的,因为您向.TrimEnd()
方法传递了一个字符串,而不是文档中提到的char[]
。
你需要这样的东西:
var a = id.Substring(0,8).TrimEnd(new char[]{'0'}).Length;
你甚至可以输入一个引号字符,使内容更可读。
var a = id.Substring(0,8).TrimEnd('0').Length;
这与Substring
调用无关。这也不起作用:
// Broken
"foo".TrimEnd("0");
查看编译器错误消息-这将起作用:
"foo".TrimEnd('0');
如果您关心微观优化,可能希望避免在每次调用时创建新数组:
private static readonly char[] ZeroForTrimming = {'0'};
...
var a = id.Substring(0,8).TrimEnd(ZeroForTrimming).Length;
尝试在0:周围使用单引号
var a = id.Substring(0, 8).TrimEnd('0').Length;
正如它所说,该方法想要的是char[]而不是字符串。你可以最容易地写
var a = id.Substring(0,8).TrimEnd("0".ToCharArray()).Length;
我在中添加了ToCharArray,因为有时您可能希望字符串是可变的。
请注意,除非您确信该字符串总是至少有8个字符长,否则您就是在找麻烦。您需要验证字符串是否至少与Substring的第二个参数一样长,否则很可能会在随机时间抛出索引超出范围的异常。
方法签名表明它需要任意数量的char
。您已提供string
。有关该方法的文档,请参阅此处。
相反,你需要这样的东西:
var a = id.Substring(0, 8).TrimEnd('0').Length
注意字符周围的单引号。
TrimEnd
需要一个char数组,而不是字符串。使用单引号将字符文字写成'x'
。
var a = id.Substring(0,8).TrimEnd('0').Length;
由于TrimEnd
的参数用params
关键字标记,因此有两种可能传递参数:
s.TrimEnd(new char[]{'0',' ',';'})
或
s.TrimEnd('0',' ',';')
在您的情况下,这就足够了:
s.TrimEnd('0')