1

私は次のものを持っています:

var options = xxx
    .Select(x => new SelectListItem
    {
        Value = ((int) Enum.ToObject(t, x)).ToString(),
        Text = Regex.Replace(x.ToString(), "([A-Z])", " $1").Trim()
    });

これは、次のように呼び出されるメソッドの一部です。

GetSpacedOptions(bool zeroPad = false)

zeroPad が true に設定されている場合、1,2,3,4,5 などを返す代わりに、select の値として「01」、「02」などを返すようにするにはどうすればよいですか? zeroPad がデフォルトまたは false に設定されている場合は、1、2 などを返す必要があります。

4

3 に答える 3

2

質問が正しいかどうかはわかりませんが、ここにそれを行う1つの方法があります。

string numberFormat = zeroPad ? "D2" : "g";
...
Value = ((int) Enum.ToObject(t, x)).ToString(numberFormat),
于 2012-10-22T03:55:52.853 に答える
1

これはどうですか:

var options = xxx 
.Select(x => new SelectListItem 
{ 
    Value = zeroPad ? ((int) Enum.ToObject(t, x)).ToString().PadLeft(2, '0')
        : ((int) Enum.ToObject(t, x)).ToString(), 
    Text = Regex.Replace(x.ToString(), "([A-Z])", " $1").Trim() 
}); 

そのコツはPadLeft方法です。最初の引数は文字列の全長であるため(int)Enum.ToObject(t, x)、2 倍 (またはそれ以上) の数値で値を返す場合は、これらの大きな値の表示方法に応じて、全長をより適切なものに調整する必要があることに注意してください。

于 2012-10-22T03:54:42.367 に答える
0

どうですか

private void GetSpacedOptions(bool zeroPad = false)
{
    string str = "";
    if(zeropad)
    {
        str = //
    }
    else
    {
        str = //
    }

    //Then use str in code
    var options = //
}
于 2012-10-22T03:52:37.347 に答える