文字列[]の項目を特定の文字列の位置に従ってどのように並べ替えることができますか?例えば、iはサブストリングによって次の配列をソートする " - "文字列の位置(C#)に従って文字列配列を並べ替える
入力を:{XX - C、XXXXX - B、YYY - 、mlllll - D}
期待出力:{YYY - 、 xxxxxは - B、XX - C、mlllll - D}
私はこれまで、次のされているもの:
public string[] SortByStringPos(string[] arr, string str, bool ascending)
{
if (ascending)
{
var result = from s in arr
where s.Length >= s.IndexOf(str)
orderby s[s.IndexOf(str)] ascending
select s;
return result.ToArray();
}
else
{
var result = from s in arr
where s.Length >= s.IndexOf(str)
orderby s[s.IndexOf(str)] descending
select s;
return result.ToArray();
}
}
は、誰かが私にヒントをドロップすることができますか...?
コードの繰り返しを減らす( 'DRY原則、あなた自身を繰り返さないでください)' -'の後に来る文字でソートしたいのですが、 '-'の位置ではなくすべての弦で? – Esailija
それでは、文字列の最後の部分だけに基づいて、文字列配列をソートするのですか?たとえば最初の4文字は無視しますか? (またはあなたの場合、 " - "の後ろの部分だけ? " –
申し訳ありませんが、私はそれを明確に指定していませんでした。 Xが項目Yに存在しない場合、新しい文字列[]の末尾にYを入れてください。 もっと明確になることを願っています...? – oren