要求是这样的:
一个最大长度是6位的字符串,可能长度是1——6
将这个字符串格式化成一个6位的表示时间的串。(时分秒)

1-〉010000
14 -〉140000
146-〉140600
1406-〉140600
14065-〉140605
25-〉出错
aaa-〉出错

解决方案 »

  1.   

    /// <summary>
    /// 主函数
    /// </summary>
    /// <param name="s"></param>
    /// <returns></returns>
    public string sToHMS(string s)
    {
    bool b=check(s);
    if (!b)
    {
    return "";
    }
    int len = s.Length;
    string ret="";
    switch(len) 
    {
    case 1:
    ret=H(s)+MS("00")+MS("00");
    break;
    case 2:
    ret=H(s)+MS("00")+MS("00");
    break;
    case 3:
    ret=H(s.Substring(0,2))+MS(s.Substring(2,1))+MS("00");
    break;
    case 4:
    ret=H(s.Substring(0,2))+MS(s.Substring(2,2))+MS("00");
    break;
    case 5:
    ret=H(s.Substring(0,2))+MS(s.Substring(2,2))+MS(s.Substring(4,1));
    break;
    case 6:
    ret=H(s.Substring(0,2))+MS(s.Substring(2,2))+MS(s.Substring(4,2));
    break;
    }
    return ret;
    } /// <summary>
    /// 检查格式
    /// </summary>
    /// <param name="s"></param>
    /// <returns></returns>
    public bool check(string s)
    {
    if (s==null)
    {
    return false;
    }
    foreach ( char c in s )
    {
    if ( c < '0' || c > '9' )
    return false;
    }
    return true;
    } /// <summary>
    /// 返回小时
    /// </summary>
    /// <param name="h"></param>
    /// <returns></returns>
    public string H(string h)
    {
    int hour =Convert.ToInt32(h);
    if (hour>24) 
    {
    return "00";
    }
    else
    {
    return hour>=10?hour.ToString():"0"+hour.ToString();
    } }
    /// <summary>
    /// 返回分和秒
    /// </summary>
    /// <param name="ms"></param>
    /// <returns></returns>
    public string MS(string ms)
    {
    int minsec =Convert.ToInt32(ms);
    if (minsec>59) 
    {
    return "00";
    }
    else
    {
    return minsec>=10?minsec.ToString():"0"+minsec.ToString();
    }
    }