0

私はC#で次の関数を持っています:

    public string getRowKey(string topic, string rk)
    {
        return string.Join("", from s in topic.Split('.')
                               select s.PadLeft(2, '0')).PadRight(4, '0') +
                    rk.Substring(4);
    }

rkがnullまたは""に等しい場合、関数が失敗するため、問題が発生します。誰かが私がこれを修正する方法を説明できますか?インデックス値に関するエラーが発生します。rkがnullまたは""の場合、rk.Substring(4)が追加された最後の部分は必要ないことに注意してください。

4

3 に答える 3

3

三項演算子?:と関数の単純な使用でstring.IsNullOrEmpty(string)十分です

public string getRowKey(string topic, string rk)
{
    return string.Join("", from s in topic.Split('.')
                           select s.PadLeft(2, '0')).PadRight(4, '0') +
    string.IsNullOrEmpty(rk) ? "": rk.Substring(4);
}
于 2012-06-07T06:21:26.270 に答える
2

これを試して -

 public string getRowKey(string topic, string rk)     {
    return string.Join("", from s in topic.Split('.')
        select s.PadLeft(2, '0')).PadRight(4, '0') +                     
   string.IsNullOrEmpty(rk)?"":rk.Substring(4);     
} 

rkのサイズが4より大きいことも確認する必要があることに注意してください。

于 2012-06-07T06:22:35.357 に答える
1
public string getRowKey(string topic, string rk)
{
    return string.Join("", from s in topic.Split('.')
                           select s.PadLeft(2, '0')).PadRight(4, '0') +
                (string.IsNullOrEmpty(rk) ? "" : rk.Substring(4));
}
于 2012-06-07T06:23:14.140 に答える