文字列の先頭から数文字を削除する最良の方法は何ですか?
sName = "IMG: Testing again"
sName = "TXT: This is amazing"
IMG: と TXT などを削除します。
それで、私はこれを持つことができますか?
sName = "Testing again"
sName = "This is amazing"
それが常に4文字になるなら、あなたはそれを行うことができます.sName = sName.Substring(5)
個人的には、このようなタスクには単純な正規表現が好きです。
var result = Regex.Replace(input, @"^[A-Z]+:\s*", "");
これは、削除されるもので示されている他のメソッドとはセマンティクスがわずかに異なるため、ここで一致について説明します (正規表現のクイック リファレンスも参照してください)。
^ # anchor match to start of input
[A-Z]+ # match one or more capital English-alphabet characters
: # match a colon
\s* # match zero or more spaces
そのため、このアプローチは「HELLOWORLDILOVEYOU:said Fred」などの入力にも一致し、「TXT: Wut?」の余分な先行スペースを取り除きます。
あなたが使用することができます
sName = sName.SubString(4, sname.Length)
文字列の 4 番目の位置から最後の位置までの部分文字列になります。
常に format を使用し、{TYPE}: {Text}
が必要な場合は、次{Text}
を使用します。
int index = sName.IndexOf(':') + 2; // two: one for the colon and one for the space
sName = sName.Substring(index);
もちろん、これは 1 行にまとめることができます。わかりやすくするために2つに分けました。
一般的なケースの拡張メソッドを作成することもできます。
public static string SubstringAfter(this string str, string sequence)
{
int index = str.IndexOf(sequence);
if (index > -1)
{
return str.Substring(str.IndexOf(sequence) + sequence.Length);
}
return str;
}
これにより、次のことが可能になります。
sName = sName.SubstringAfter(": ");
sName = sName.Remove(0,5); //simple but not perfect way
編集:
sName= sName.Split(':')[1]; //For splitting by ':'
sName = sName.Remove(0,1); //For the space, or use sName.Trim();