@@ -126,11 +126,11 @@ public static T ToEnumValue<T>(this string value, string defaultValue = "Unspeci
126
126
{
127
127
try
128
128
{
129
- return ( T ) Enum . Parse ( typeof ( T ) , value , true ) ;
129
+ return ( T ) Enum . Parse ( typeof ( T ) , value , true ) ;
130
130
}
131
131
catch
132
132
{
133
- return ( T ) Enum . Parse ( typeof ( T ) , defaultValue , true ) ;
133
+ return ( T ) Enum . Parse ( typeof ( T ) , defaultValue , true ) ;
134
134
}
135
135
}
136
136
@@ -186,7 +186,7 @@ public static double ToDouble(this string value, double defaultValue)
186
186
if ( string . IsNullOrEmpty ( value ) ) return defaultValue ;
187
187
188
188
if ( ! double . TryParse ( value . Replace ( ',' , '.' ) , NumberStyles . Any , CultureInfo . InvariantCulture ,
189
- out var result ) )
189
+ out var result ) )
190
190
if ( ! double . TryParse ( value , NumberStyles . Any , CultureInfo . InvariantCulture , out result ) )
191
191
result = defaultValue ;
192
192
@@ -349,7 +349,7 @@ public static T DeserializeXml<T>(this string value)
349
349
var ser = new XmlSerializer ( typeof ( T ) ) ;
350
350
351
351
using var sr = new StringReader ( value ) ;
352
- return ( T ) ser . Deserialize ( sr ) ;
352
+ return ( T ) ser . Deserialize ( sr ) ;
353
353
}
354
354
355
355
/// <summary>
@@ -520,5 +520,37 @@ public static string ReplaceEnd(this string source, string value, string replace
520
520
{
521
521
return Regex . Replace ( source , $ "{ value } $", replacement ) ;
522
522
}
523
+
524
+ /// <summary>
525
+ /// Converts a string to a timespan
526
+ /// eg 1m = 00:01:00, 2h = 02:00:00, 3h50m = 03:50:00
527
+ /// qualifiers are: [d]ays, [h]ours, [m]inutes, [s]econds, [ms]econds
528
+ /// </summary>
529
+ /// <param name="value"></param>
530
+ /// <returns></returns>
531
+ public static TimeSpan ToTimeSpan ( this string value )
532
+ {
533
+ var matches = Regex . Matches ( value , "(?<number>[0-9]+)(?<qualifier>[dhms]+)" , RegexOptions . IgnoreCase ) ;
534
+ if ( matches . Count == 0 ) return TimeSpan . Zero ;
535
+
536
+ var result = TimeSpan . Zero ;
537
+
538
+ foreach ( Match match in matches )
539
+ {
540
+ var number = Convert . ToInt32 ( match . Groups [ "number" ] . Value ) ;
541
+
542
+ result = result . Add ( match . Groups [ "qualifier" ] . Value . ToLower ( ) switch
543
+ {
544
+ "d" => TimeSpan . FromDays ( number ) ,
545
+ "h" => TimeSpan . FromHours ( number ) ,
546
+ "m" => TimeSpan . FromMinutes ( number ) ,
547
+ "s" => TimeSpan . FromSeconds ( number ) ,
548
+ "ms" => TimeSpan . FromMilliseconds ( number ) ,
549
+ _ => TimeSpan . Zero
550
+ } ) ;
551
+ }
552
+
553
+ return result ;
554
+ }
523
555
}
524
- }
556
+ }
0 commit comments