簡體   English   中英

獲取字符串 C# 的第一個和最后一個字符

[英]Get the two first and last chars of a string C#

好吧,我想獲取字符串的第一個和最后一個字符。 這是我已經得到的

  public static string FirstLastChars(this string str)
        {
            return str.Substring(0,2);
        }

順便提一句。 這是一個擴展方法

從 C# 8.0 開始,您可以使用數組范圍:

public static class StringExtentions {
    public static string FirstLastChars(this string str)
    {
       // If it's less that 4, return the entire string
       if(str.Length < 4) return str;
       return str[..2] + str[^2..];
    }
}

在此處檢查解決方案: https : //dotnetfiddle.net/zBBT3U

您可以使用現有的字符串 Substring 方法。 檢查以下代碼。

public static string FirstLastChars(this string str)
{
    if(str.Length < 4)
    {
      return str;
    }
    return str.Substring(0,2) + str.Substring(str.Length - 1, 1) ;
}

作為替代方案,您可以使用Span Api。

首先,您需要創建一個緩沖區並將其傳遞給Span實例。 (有了這個,你就有了一個可寫的Span 。)

var strBuffer = new char[3];
var resultSpan = new Span<char>(strBuffer);

您可以從原始str創建兩個ReadOnlySpan<char>實例,以引用前兩個字母和最后一個字母。

var strBegin = str.AsSpan(0, 2);
var strEnd = str.AsSpan(str.Length - 1, 1);

為了從兩個Span對象生成單個字符串,您需要將它們連接起來。 您可以通過使用可寫跨度來做到這一點。

strBegin.CopyTo(resultSpan.Slice(0, 2));
strEnd.CopyTo(resultSpan.Slice(2, 1));

最后讓我們將Span<char>轉換為string 您可以通過多種方式執行此操作,但最方便的兩個命令如下:

  • new string(resultSpan)
  • resultSpan.ToString()

幫手:

public static class StringExtentions
{
    public static string FirstLastChars(this string str)
    {
        if (str.Length < 4) return str;

        var strBuffer = new char[3];
        var resultSpan = new Span<char>(strBuffer);

        var strBegin = str.AsSpan(0, 2);
        var strEnd = str.AsSpan(str.Length - 1, 1);

        strBegin.CopyTo(resultSpan.Slice(0, 2));
        strEnd.CopyTo(resultSpan.Slice(2, 1));

        return new string(resultSpan);
    }
}

用法:

class Program
{
    static void Main(string[] args)
    {
        string str = "Hello World!";
        Console.WriteLine(str.FirstLastChars()); //He!
    }
}

試試這個代碼-

 static void Main(string[] args)
    {
        int[] numbers = { 12, 34, 64, 98, 32, 46 };
        var finalList = numbers.Skip(2).SkipLast(2).ToArray();

        foreach(var item in finalList)
        {
            Console.WriteLine(item + "");
        }
    }

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM