可以';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

我看不出我做错了什么。有人有什么想法吗?

可以';t获取子字符串,然后修剪变量

您所做的是错误的,因为您向.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')
相关文章: