文字列から最初の10文字を削除する方法は?


92

文字列の最初の10文字を無視する方法は?

入力:

str = "hello world!";

出力:

d!

9
string.Substring(9); ここで、9は開始インデックス
Waqas '25

文字列が少なくとも10文字であることを最初に確認することを忘れないでください。そうしないと、例外が発生します。
ジョナサン

なぜ部分文字列は(startIndex、endindex)をサポートしないのですか?長さを計算する必要があるたびに.. :-(
Sangram Nandkhile '25

1
@Waqas:実際にはstr.Substring(10)、サブストリング開始が抽出される位置であるパラメーターの
ラズバンFlaviusのパンダ

回答:


92
str = "hello world!";
str.Substring(10, str.Length-10)

長さチェックを実行する必要があります。そうしないと、エラーがスローされます


214

str = str.Remove(0,10); 最初の10文字を削除します

または

str = str.Substring(10); 11文字目から文字列の終わりまでの部分文字列を作成します。

あなたの目的のために、それらは同じように動作するはずです。


16

他の人が指摘したように、部分文字列はおそらくあなたが望むものです。しかし、ミックスに別のオプションを追加するだけです...

string result = string.Join(string.Empty, str.Skip(10));

これで長さをチェックする必要さえありません!:) 10文字未満の場合、空の文字列が返されます。


読みやすくするために、「」を使用できます。これはstring.Emptyとまったく同じようにコンパイルされます。
PRMan

10

Substring には2つのオーバーロードメソッドがあります。

public string Substring(int startIndex);//The substring starts at a specified character position and continues to the end of the string.

public string Substring(int startIndex, int length);//The substring starts at a specified character position and taking length no of character from the startIndex.

したがって、このシナリオでは、以下のような最初の方法を使用できます。

var str = "hello world!";
str = str.Substring(10);

出力は次のとおりです。

d!

その長さをチェックすることによって防御的コーディングを適用する場合。


5

Substringは、startIndexというパラメーターがあります。開始したいインデックスに従って設定します。


3

以下のLineを使用してCharを削除できます。

:- 最初に、その文字列に、削除するの十分な文字があることを確認します。

   string temp="Hello Stack overflow";
   if(temp.Length>10)
   {
    string textIWant = temp.Remove(0, 10);
   }


1

開始するインデックスである単一のパラメーターを取るメソッドSubstringメソッドを使用できます。

以下の私のコードでは、長さが目的の開始インデックスより短く、長さがゼロの場合を扱います。

string s = "hello world!";
s = s.Substring(Math.Max(0, Math.Min(10, s.Length - 1)));

現在、文字列が10文字未満の場合、文字列の最後の文字を返します。
はRazvanフラウィウスパンダ

1

ために:

var str = "hello world!";

最初の10文字を含まない結果の文字列を取得するには、文字列の長さが10以下の場合は空の文字列を使用します。

var result = str.Length <= 10 ? "" : str.Substring(10);

または

var result = str.Length <= 10 ? "" : str.Remove(0, 10);

最初のバリアントは、1つのメソッドパラメータしか必要としないため、推奨されます。


1

Substringメソッドに長さを指定する必要はありません。したがって:

string s = hello world;
string p = s.Substring(3);

p になります:

「lo world」。

必要な唯一の例外はArgumentOutOfRangeExceptionstartIndexがゼロより小さいか、このインスタンスの長さより大きい場合です。


0

C#8以降では、単純に範囲演算子を使用できます。これは、このようなケースを処理するためのより効率的で優れた方法です。

string AnString = "Hello World!";
AnString = AnString[10..];

C# 8ターゲティングする場合はサポートされません.NET Framework
l33t

0

を呼び出すとSubString()、新しい文字列が割り当てられます。最適なパフォーマンスを得るには、余分な割り当てを避ける必要があります。C# 7.2あなたから始めて、スパンを利用することができますパターン。

をターゲティングする.NET Framework場合は、System.Memory NuGetパッケージを含めます。以下のため.NET Coreのプロジェクトこれは、箱から出して動作します。

static void Main(string[] args)
{
    var str = "hello world!";
    var span = str.AsSpan(10); // No allocation!

    // Outputs: d!
    foreach (var c in span)
    {
        Console.Write(c);
    }

    Console.WriteLine();
}
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.