2012-03-07 10 views
-9

文字列の2つの場合があります。もちろんC#優雅な方法で文字列を分割する

string mystring = "/aaa/bbb/ccc/ddd/eee" 

string mystring2 = "aaa/bbb/ccc/ddd/eeee/"; 

私は「/」で分割を使用して、いくつかのチェックを行いますが、私はいくつかのエレガントなソリューションを探していますすることができます。

mystring.Split( '/')の場合、配列の2番目または3番目の位置にある可能性があります。どのようにそれがわかっていますか?

「ccc」を取得するにはどうすればよいですか?

THanks!

+5

はのstring.Split() ''と間違っているものをエレガントなソリューション – MilkyWayJoe

+1

を定義します。最後に

int position = Array.IndexOf(split, "ccc"); // Returns 2 int position2 = Array.IndexOf(split2, "ccc"); // Returns 2 

はあなたがこのような何かを行うことができ、正しい位置/インデックスを得ていることを確認するには? –

+1

なぜ分割する必要があり、何を確認する必要がありますか? – Kaf

答えて

4

:次に

string mystring = "/aaa/bbb/ccc/ddd/eee"; 
string mystring2 = "aaa/bbb/ccc/ddd/eeee/"; 

string[] result = mystring.Trim({'/'}).Split('/'); 
string[] result2 = mystring2.Trim({'/'}).Split('/'); 

を、resultresult2は同じだろう。エレガント

+0

この解決策と '' aaa // bbb ''のような文字列では、' 'bbb''部分は '' aaa/bbb "'と同じ場所にはありません。ジョーの解決策では、それはそうだろう。 – phoog

+0

ええ、私は実際にジョーのソリューションをupvoted。 'StringSplitOptions'を認識していませんでした。 – derekaug

0

String.Splitメソッドよりも洗練されたものは何ですか?それは区切り文字を取り、分割された文字列の配列を吐き出します。

+0

私はmystring.Split( '/')それは配列の2番目または3番目の位置にすることができます場合は、どのように私はそれを知っていますか? –

7

あなたは疑問ではありませんが、暗闇の中で刺すと、入力文字列の先頭と最後にスラッシュが入った空のエントリを無視したいとします。あなたが試みることができる場合には

:あなたが何か行うことができ

String.Split(new string[] {"/"}, StringSplitOptions.RemoveEmptyEntries) 
+0

OPの質問の私の解釈では、これは最もクリーンな解決策であるようです。 – Christoffer

5
myString.Split(new[] { '/' }, StringSplitOptions.RemoveEmptyEntries).ElementAt(2); 
+0

'myString.Split(new [] {'/'}、StringSplitOptions.RemoveEmptyEntries)[2];'を使うことができるときに ".ElementAt"を使う理由は? – phoog

+0

私は明らかに、あの日IEnumerableを返すものが多すぎて遊んでいました。 – Scroog1

0

かどうか、あなたはまだSplitを使用して、問題のあると思われる条件をチェックすることができます:それはスラッシュで開始するか、しないのですか?

string[] split = mystring.Split("/"); 
if (mystring.StartsWith("/")) 
    // index = 3; 
else 
    // index = 2; 
0

結果の長さを確認して、関連する結果のみを返すことができます。

var split = mystring.Split('/').Where(p => p.Length > 0).ToArray(); 
var split2 = mystring2.Split('/').Where(p => p.Length > 0).ToArray(); 

これにより、両方の文字列で同じ結果が得られます。

次に、配列内の位置を把握する必要がある場合は、次の操作を行うだけです。

string string1 = split[position]; 
string string2 = split2[position2]; 
関連する問題