166

この質問を読んで、文字列の最初の文字を取得しました。C# の文字列から最初の n 文字を取得する方法はありますか?

4

22 に答える 22

262

次のように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());
    

このアプローチの利点は、事前に長さをチェックしていないことです。

  • もう1つの方法はString.Substring、エラーチェックで使用することです

お気に入り:

string firstFivCharWithSubString = 
    !String.IsNullOrWhiteSpace(yourStringVariable) && yourStringVariable.Length >= 5
    ? yourStringVariable.Substring(0, 5)
    : yourStringVariable;
于 2013-04-11T06:23:01.617 に答える
55

してみてください:

yourString.Substring(0, 5);

C# SubstringString.Substring メソッドを確認してください

于 2013-04-11T06:23:40.560 に答える
43

Substring(int startIndex, int length)を使用できます

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

部分文字列は、指定された文字位置から始まり、指定された長さになります。このメソッドは、現在のインスタンスの値を変更しません。代わりに、現在の文字列 ( MSDN ) の startIndex 位置から長さ文字を含む新しい文字列を返します。

ソース文字列が 5 文字未満の場合はどうなりますか? 上記の方法を使用すると、例外が発生します。文字列の文字数が 5 を超えているかどうかを確認する条件を設定し、Substring を介して最初の 5 文字を取得できます。ソース文字列を firstFiveChar 変数に割り当てたことに注意してください。文字数が 5 未満の場合、firstFiveChar は変更されないため、else 部分は必要ありません。

string firstFiveChar = str;
If(!String.IsNullOrWhiteSpace(yourStringVariable) && yourStringVariable.Length >= 5)
      firstFiveChar = yourStringVariable.Substring(0, 5);
于 2013-04-11T06:23:13.837 に答える
34

を使用するときに適切なチェックを行う方法について誰も言及してSubstring()いなかったので、それについて貢献したいと思いました。

Linqを使用して使用したくない場合はSubstring()、文字列が関数の 2 番目のパラメーター (長さ) よりも大きいことを確認する必要がありSubstring()ます。

最初の 5 文字が必要だとしましょう。次のように、適切なチェックでそれらを取得する必要があります。

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

// firstFiveChars: "love" (4 characters)

このチェックがないと、Substring()関数は存在しない文字を繰り返し処理するため、例外をスローします。

私はあなたがアイデアを得ると思います...

于 2015-05-05T22:43:06.163 に答える
23

問題.Substring(,)は、指定された文字列が少なくとも要求された文字数の長さを持っていることを確認する必要があることです。そうでない場合は、ArgumentOutOfRangeExceptionがスローされます。

解決策 1 (「部分文字列」を使用):

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

使用の欠点は.Substring(、指定された文字列の長さを確認する必要があることです。

解決策 2 (「テイク」を使用):

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

「Take」を使用すると、指定された文字列の長さを確認する必要がなくなります。

于 2014-09-19T09:05:34.233 に答える
12

なぜ誰かがこれについて言及したのかわかりません。しかし、これはこれを達成するための最短かつ簡単な方法です。

string str = yourString.Remove(n);

n- 必要な文字数

var zz = "7814148471";
Console.WriteLine(zz.Remove(5));
//result - 78141
于 2015-11-10T12:35:20.060 に答える
7
string str = "GoodMorning"

string strModified = str.Substring(0,5);
于 2013-04-11T06:23:39.603 に答える
6

これは、2020年にそれを行う方法です。

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

Span<T>は文字列のメモリを直接指し、一時的な文字列の割り当てを回避します。もちろん、 をstring要求する後続のメソッドには変換が必要です。

Console.WriteLine(first5.ToString());

ただし、最近では多くの.NETAPI でスパンが許可されています。可能であればそれらに固執してください!

注:ターゲットを設定する場合は、 System.Memory.NET Frameworkパッケージへの参照を追加しますが、同じ優れたパフォーマンスは期待できません。

于 2020-09-28T07:45:02.793 に答える
2

以下は、文字列が必要なサイズよりも大きいかどうかをチェックし、定義された最大文字数まで文字列を短縮して「...」を追加する拡張メソッドです。

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;
    }
}
于 2015-02-04T13:57:24.537 に答える
0

これは私が使用しているものです。必要な文字数より少ない文字列でも問題ありません

private string TakeFirstCharacters(string input, int characterAmount)
{
    return input?.Substring(0, Math.Min(input.Length, characterAmount));
}
于 2022-01-09T14:15:29.733 に答える
0

C# 8 では、 Range Operatorsを使用できます。元の文字列が目的の長さよりも短い場合の例外を回避するために、次を使用できますMath.Min

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

もちろん、元の文字列の方が長いことがわかっている場合は、次のように最適化できます。

string newString = oldstring[..5];
于 2022-02-03T11:39:37.163 に答える
-3

上記の回答を試しましたが、これが一番だと思います

@item.First_Name.Substring(0,1)

これで、文字列の最初の文字を取得できました

于 2016-11-09T19:10:36.037 に答える
-3

以下のコードを試してください

 string Name = "Abhishek";
 string firstfour = Name.Substring(0, 4);
 Response.Write(firstfour);
于 2016-09-02T08:49:07.287 に答える