我们如何在C#
上将给定小时和Min格式转换为秒示例:实际字符串为" 12小时14分钟" 需要转换为= 734 (这是必需的逻辑)
由于 734 = 12小时* 60分钟= 720分钟+14分钟 我希望" substring"将为此提供帮助或请提供解决方案
答案 0 :(得分:2)
不明确的问题的过冲解决方案:
String source = "12 hours 14 mins";
String[] chunks = source.Split(new Char[] { ' ' }, StringSplitOptions.RemoveEmptyEntries);
int seconds = 0;
for (int i = 0; i < chunks.Length - 1; ++i) {
int v;
if (int.TryParse(chunks[i], out v)) {
String mark = chunks[i + 1];
if (mark.StartsWith("h", StringComparison.OrdinalIgnoreCase))
seconds += 3600 * v;
else if (mark.StartsWith("m", StringComparison.OrdinalIgnoreCase))
seconds += 60 * v;
else if (mark.StartsWith("s", StringComparison.OrdinalIgnoreCase))
seconds += v;
i += 1;
}
}
// Test 44040 = 12 * 60 * 60 + 14 * 60 (you've asked for seconds, right?)
Console.Write(seconds);
支持的格式(示例):
12 hours 50 mins 5 secs
12 hours 5 secs
12 hours
15 min
15 secs
20 h 30 m 15 s
等
答案 1 :(得分:1)
如果输入字符串的格式始终为00 hours 00 mins
,那么您只需使用Split
来提取值:
String str = "1234 hours 14 mins";
String split = str.Split(" hours");
int hours = int.Parse(split[0]);
int minutes = int.Parse(split.Split(" mins")[0]);
Console.WriteLine(hours * 60 + minutes);
答案 2 :(得分:0)
如果您的字符串是常量格式:
几小时的正则表达式:\d+(?=\shour)
分钟的正则表达式\d+(?=\smin)
为什么正则表达式而不是子字符串?你玩1 hour
和10 hours
所以即使是“s”也可以改变子串的索引
获取有关如何实现正则表达式here
的信息