假设我有一个字符串:

"34234234d124"

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

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


当前回答

与之前的一些答案相比,主要的区别是这段代码考虑了当输入字符串是:

零 大于或匹配所要求的长度 比要求的长度短。

下面就是:

public static class StringExtensions
{
    public static string Right(this string str, int length)
    {
        return str.Substring(str.Length - length, length);
    }

    public static string MyLast(this string str, int length)
    {
        if (str == null)
            return null;
        else if (str.Length >= length)
            return str.Substring(str.Length - length, length);
        else
            return str;
    }
}

其他回答

使用Substring实际上是非常简短和可读的:

 var result = mystring.Substring(mystring.Length - Math.Min(4, mystring.Length));
 // result == "d124"
public static string Last(this string source, int tailLength)
{
  return tailLength >= source.Length ? source : source[^tailLength..];
}

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

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

using Microsoft.VisualBasic;
//...

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

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

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

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

mystring.Substring(Math.Max(0, mystring.Length - 4)); //how many lines is this?

如果你确定字符串的长度至少是4,那么它甚至更短:

mystring.Substring(mystring.Length - 4);