假设我有一个字符串:

"34234234d124"

我想要得到这个字符串的最后四个字符,这个字符串是“d124”。我可以使用SubString,但它需要几行代码,包括命名一个变量。

是否有可能在c#的一个表达式中得到这个结果?


当前回答

定义:

public static string GetLast(string source, int last)
{
     return last >= source.Length ? source : source.Substring(source.Length - last);
}

用法:

GetLast("string of", 2);

结果:

of

其他回答

这不仅仅是一个OP问题,而是一个如何将字符串的后3用于特定目的的例子。在我的例子中,我想对存储为字符串(1到3位数字)的数字字段进行数值排序(LINQ OrderBy)。所以,为了让字符串数字像数字一样排序,我需要用零填充字符串数字,然后取最后3。结果orderderby语句是:

myList = myList.OrderBy(x => string.Concat("00",x.Id)[^3..])

OrderBy语句中使用的string.Concat()会生成像“001”,“002”,“011”,“021”,“114”这样的字符串,如果它们被存储为数字,它们就会按照它们的方式排序。

下面是另一个应该不会太糟糕的替代方案(因为延迟执行):

新的字符串(mystring.Reverse (), (4) .Reverse () .ToArray ());

虽然mystring.Last(4)的扩展方法显然是最干净的解决方案,尽管要做更多的工作。

string var = "12345678";

var = var[^4..];

// var = "5678"

这是一个索引运算符,字面意思是“从end(^4)到end(..)取最后四个字符”

你所要做的就是…

String result = mystring.Substring(mystring.Length - 4);

好吧,我知道这是一篇旧文章,但为什么我们要重写框架中已经提供的代码呢?

我建议您添加一个对框架DLL "Microsoft. DLL "的引用。VisualBasic”

using Microsoft.VisualBasic;
//...

string value = Strings.Right("34234234d124", 4);