私は以下を持っています:
string test = "9586-202-10072"
ファイナルの右側にあるすべての文字を-10072にするにはどうすればいいですか。10072です。文字数は常に最後のダッシュの右側とは異なります。
これはどのように行うことができますか?
私は以下を持っています:
string test = "9586-202-10072"
ファイナルの右側にあるすべての文字を-10072にするにはどうすればいいですか。10072です。文字数は常に最後のダッシュの右側とは異なります。
これはどのように行うことができますか?
回答:
あなたは、最後の位置を取得することができます-しstr.LastIndexOf('-')。したがって、次のステップは明白です。
var result = str.Substring(str.LastIndexOf('-') + 1);
補正:
ブライアンが以下に述べるように、ダッシュなしの文字列でこれを使用すると、同じ文字列が返されます。
LastIndexOf何も見つからない場合は-1を返します(これは文書化された動作なので、信頼しても問題ありません)。 str.Substring(1-1)あなたに等しい文字列を与えますstr。ここに驚きはありません。
LINQを使用して、明示的な解析を省くことができます。
string test = "9586-202-10072";
string lastFragment = test.Split('-').Last();
Console.WriteLine(lastFragment);
YourString.Substring(YourString.LastIndexOf("-"));
この投稿が46,000回以上閲覧されたことがわかります。46,000人の視聴者の多くがこの質問をしているのは、単にファイル名が欲しいだけだからです。
単にファイル名を取得したい場合は、ここで言及する必要がある簡単な答えがあります。それが質問に対する正確な答えでなくても。
result = Path.GetFileName(fileName);
https://msdn.microsoft.com/en-us/library/system.io.path.getfilename(v=vs.110).aspxを参照してください
String.lastIndexOfメソッドを参照
strがnullであるか、ハイフンがまったく含まれていない場合にのみ失敗します。(ハイフンがない場合、スローされません。ソース文字列全体が返されます。)