簡體   English   中英

"如何獲取字符串的前五個字符"

[英]How to get the first five character of a String

我已閱讀此問題以獲取字符串的第一個字符<\/a>。 有沒有辦法從 C# 中的字符串中獲取前 n 個字符?

"

你可以使用Enumerable.Take像:

char[] array = yourStringVariable.Take(5).ToArray();

或者您可以使用String.Substring

string str = yourStringVariable.Substring(0,5);

請記住,如果字符串的長度小於所需的字符,則String.Substring可能會引發異常。

如果您想以字符串形式返回結果,則可以使用:

  • 使用字符串構造函數和 LINQ 的Take

     string firstFivChar = new string(yourStringVariable.Take(5).ToArray());

這種方法的優點是無需事先檢查長度。

  • 另一種方法是使用String.Substring進行錯誤檢查

像:

string firstFivCharWithSubString = 
    !String.IsNullOrWhiteSpace(yourStringVariable) && yourStringVariable.Length >= 5
    ? yourStringVariable.Substring(0, 5)
    : yourStringVariable;

請試試:

yourString.Substring(0, 5);

檢查C# Substring , String.Substring 方法

您可以使用Substring(int startIndex, int length)

string result = str.Substring(0,5);

子字符串從指定的字符位置開始並具有指定的長度。 此方法不會修改當前實例的值。 相反,它返回一個新的字符串,從當前字符串中的 startIndex 位置開始, MSDN

如果源字符串少於五個字符怎么辦? 您將通過使用上述方法獲得異常。 我們可以使用條件來檢查字符串中的字符數是否大於 5,然后通過 Substring 獲取前五個。 注意我已將源字符串分配給 firstFiveChar 變量。 如果字符小於 5,則 firstFiveChar 不會更改,因此不需要其他部分。

string firstFiveChar = str;
If(!String.IsNullOrWhiteSpace(yourStringVariable) && yourStringVariable.Length >= 5)
      firstFiveChar = yourStringVariable.Substring(0, 5);

沒有人提到在使用Substring()時如何進行適當的檢查,所以我想為此做出貢獻。

如果您不想使用Linq並使用Substring() ,則必須確保您的字符串大於Substring()函數的第二個參數(長度)。

假設您需要前 5 個字符。 您應該通過適當的檢查來獲取它們,如下所示:

string title = "love" // 15 characters
var firstFiveChars = title.Length <= 5 ? title : title.Substring(0, 5);

// firstFiveChars: "love" (4 characters)

如果沒有這個檢查, Substring()函數會拋出一個異常,因為它會遍歷不存在的字母。

我想你應該已經明白了...

.Substring(,)的問題是,您需要確保給定的字符串至少具有要求的字符數的長度,否則將拋出ArgumentOutOfRangeException

解決方案 1(使用“子字符串”):

var firstFive = stringValue != null && stringValue.Length > 5 ? 
                   stringValue.Substring(0, 5) :
                   stringValue;

使用.Substring(的缺點是您需要檢查給定字符串的長度。

解決方案 2(使用“Take”):

var firstFive = stringValue != null ? 
                    string.Join("", stringValue.Take(5)) : 
                    null;

使用'Take'將防止您需要檢查給定字符串的長度。

請注意,在 C# 8.0 中有一種新方法可以做到這一點:范圍運算符

微軟文檔

或者我喜歡稱它們為 Pandas 切片。

舊方式:

string newString = oldstring.Substring(0, 5);

新方法:

string newString = oldstring[..5];

乍一看,這對於較短代碼的可讀性來說似乎是一個非常糟糕的權衡,但新功能為您提供了

  1. 切片數組(以及字符串)的標准語法
  2. 像這樣很酷的東西:

    var slice1 = list[2..^3]; // 列表[Range.Create(2, Index.CreateFromEnd(3))]

    var slice2 = list[..^3]; // 列表[Range.ToEnd(Index.CreateFromEnd(3))]

    var slice3 = list[2..]; // 列表[Range.FromStart(2)]

    var slice4 = list[..]; // 列表[Range.All]

使用 PadRight 函數來防止字符串太短,抓住你需要的東西,然后在一個語句中從末尾修剪空格。

strSomeString = strSomeString.PadRight(50).Substring(0,50).TrimEnd();

我不知道為什么有人提到這個。 但這是實現這一目標的最短和最簡單的方法。

string str = yourString.Remove(n);

n - 您需要的字符數

例子

var zz = "7814148471";
Console.WriteLine(zz.Remove(5));
//result - 78141

附加五個空白字符,然后剪掉前五個並修剪結果。 您附加的空格數應與您要切割的數字相匹配。 確保在.Substring(0,X)之前包含括號.Substring(0,X)否則您將不附加任何內容。

string str = (yourStringVariable + "    ").Substring(0,5).Trim();

使用這種技術,您將不必擔心其他答案中提到的ArgumentOutOfRangeException

string str = "GoodMorning"

string strModified = str.Substring(0,5);

從C#中的字符串中獲取前n個字符

String yourstring="Some Text";  
String first_n_Number_of_Characters=yourstring.Substring(0,n);

C# 8.0 中,您可以像這樣獲取字符串的前五個字符

string str = data[0..5];

這是有關指數和范圍的更多信息

下面是一個擴展方法,它檢查字符串是否大於所需的字符串,並將字符串縮短到定義的最大字符數並附加“...”。

public static class StringExtensions
{
    public static string Ellipsis(this string s, int charsToDisplay)
    {
        if (!string.IsNullOrWhiteSpace(s))
            return s.Length <= charsToDisplay ? s : new string(s.Take(charsToDisplay).ToArray()) + "...";
        return String.Empty;
    }
}

當 str 小於 5 時,請嘗試此代碼。

string strModified = str.Substring(0,str.Length>5?5:str.Length);

這就是你在 2020 年的做法:

var s = "ABCDEFGH";
var first5 = s.AsSpan(0, 5);

Span<T>直接指向字符串的內存,避免分配臨時字符串。 當然,任何要求string后續方法都需要進行轉換:

Console.WriteLine(first5.ToString());

不過,如今許多.NET API 允許跨度。 如果可能的話,堅持下去!

注意:如果以.NET Framework為目標,添加對System.Memory包的引用,但不要期望同樣出色的性能。

我用:

var firstFive = stringValue?.Substring(0, stringValue.Length >= 5 ? 5 : customAlias.Length);

或者如果您也想檢查空格(而不是僅空):

var firstFive = !String.IsNullOrWhiteSpace(stringValue) && stringValue.Length >= 5 ? stringValue.Substring(0, 5) : stringValue

或者你可以使用String.ToCharArray()
它接受int startindexint length作為參數並返回一個char[]

new string(stringValue.ToCharArray(0,5))

您仍然需要確保字符串具有正確的長度,否則會拋出ArgumentOutOfRangeException

如果我們只想要任何字段的前 5 個字符,那么這可以通過 Left 屬性來實現

Vessel = f.Vessel !=null ? f.Vessel.Left(5) : ""

這就是我正在使用的,字符串少於所需字符沒有問題

private string TakeFirstCharacters(string input, int characterAmount)
{
    return input?.Substring(0, Math.Min(input.Length, characterAmount));
}

在 C# 8 中,您可以使用范圍運算符 如果您的原始字符串短於所需長度,為了避免異常,您可以使用Math.Min

string newString = oldstring[..Math.Min(oldstring.Length, 5)];

當然,如果知道原來的字符串比較長,可以優化:

string newString = oldstring[..5];

試試下面的代碼

 string Name = "Abhishek";
 string firstfour = Name.Substring(0, 4);
 Response.Write(firstfour);

我已經嘗試了上述答案,我認為最好的是這個

@item.First_Name.Substring(0,1)

在這個我可以得到字符串的第一個字母

暫無
暫無

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

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