0

NTP 時間または単位文字を含む短い時間文字列として指定できるタイムスタンプ値を解析する必要があります。

例:

time = 604800 (can cast to long, easy!)

また

time = 7d

このような場合、.NET に組み込みの日時解析機能はありますか? または、数値ではない文字を探す必要がありますか (おそらく正規表現を使用しますか?)。

以下のキャラクターの登場が予想されます。

  d - days 
  h - hours 
  m - minutes 
  s - seconds
4

1 に答える 1

1

このような基本的な操作には正規表現は必要ありません。

public static int Process(string input)
{
    input = input.Trim();                                          // Removes all leading and trailing white-space characters 

    char lastChar = input[input.Length - 1];                       // Gets the last character of the input

    if (char.IsDigit(lastChar))                                    // If the last character is a digit
        return int.Parse(input, CultureInfo.InvariantCulture);     // Returns the converted input, using an independent culture (easy ;)

    int number = int.Parse(input.Substring(0, input.Length - 1),   // Gets the number represented by the input (except the last character)
                           CultureInfo.InvariantCulture);          // Using an independent culture

    switch (lastChar)
    {
        case 's':
            return number;
        case 'm':
            return number * 60;
        case 'h':
            return number * 60 * 60;
        case 'd':
            return number * 24 * 60 * 60;
        default:
            throw new ArgumentException("Invalid argument format.");
    }
}
于 2013-07-23T14:19:27.487 に答える