2011-12-28 5 views
5

は、我々はこの文字列を持っていますか?最初のアンダースコアの後、2番目のアンダースコアの前にあるすべての文字を取得するための部分文字列の書式設定?どのように私は単にストリングでこれを取得することができ、</p> <ul> <li>hello_myのname_is_bob</li> </ul> <p>と、文字列の唯一の「私の名前」の部分を取得したい:例えば

また、この例の形式は常に同じであるため、最初のアンダースコアの後で2番目のアンダースコアの前にあるものを取得するだけで済みます。あなたが知っている場合

string name = "hello_my name_is_bob".Split('_')[1]; 

答えて

14

string.Splitは、この、Substringに行くする必要はありませんのために尽くします2つのアンダースコアがあることを確認してください。

var pos = str.IndexOf('_'); 
var last = str.IndexOf('_', pos+1); 
var res = str.Substring(pos+1, last-pos-1); 

アンダースコアの数が2未満の場合はlです。

+0

まず、二重引用符を使用していましたが、それは私に例外を与えていましたので、一重引用符に変更し、それはチャンピオンのように機能しました。 – MDL

+0

@MDL - C#の二重引用符は文字列を区切り、一重引用符は文字を区切ります。 – Oded

1

var parts = "hello_my name_is_bob".Split('_'); 

string name = parts[1] // == "my name"; 

あるいは、1つのライナー(私はこの読みにくく見つけるのに)で:

2
"hello_my name_is_bob".Split('_').Skip(1).First(); 
関連する問題