我正在尝试按照以下格式解析字符串:HH:MM
12:23 //Normal
2:24 //No trailing 0
01:00 //With trailing 0
00:21 //00 First number
0:32 //0 First Number
10:4 //No 0 second number, denotes 10:04
第一个数字最大24,最小0。
第二个数字最大59,最小0。
我制作了字符串正则表达式字符串\d:\d
。但这仍然匹配范围之外的数字。处理这些数字的最佳方式是什么?
我在C#中作为字符串进行此验证,如果有更好的方法来验证此格式(并将其拆分为小时和分钟,请让我知道!)
基本上,我接受输入为HH:MM,对其进行验证、拆分,然后将其转换为分钟的整数。
示例:
您可以使用TimeSpan。TryParse
。这具有通过TotalMinute
属性为您计算分钟数的额外好处:
List<string> tests = new List<string>()
{
"12:23", //Normal
"2:24", //No trailing 0
"01:00", //With trailing 0
"00:21", //00 First number
"0:32", //0 First Number
"10:4", //No trailing 0 second number
};
foreach (var test in tests)
{
TimeSpan t;
if (TimeSpan.TryParse(test, out t))
Console.WriteLine(t.TotalMinutes);
else
Console.WriteLine("Not valid");
}
哪个输出:
743
144
60
21
32
604
@AlexK在评论中正确指出,这将匹配包含秒的字符串,例如11:22:33
。为了防止这种情况,您可以使用TryParseExact
并传递可接受格式的数组:
List<string> tests = new List<string>()
{
"12:23", //Normal
"2:24", //No trailing 0
"01:00", //With trailing 0
"00:21", //00 First number
"0:32", //0 First Number
"10:4", //No trailing 0 second number
"11:22:33", //Error
};
foreach (var test in tests)
{
TimeSpan t;
//if (TimeSpan.TryParse(test, out t))
if (TimeSpan.TryParseExact(test, new[] { "h\\:m", "hh\\:m", "hh\\:m", "h\\:mm", "hh\\:mm" }, CultureInfo.CurrentCulture, out t))
Console.WriteLine(t.TotalMinutes);
else
Console.WriteLine("Failed");
}
哪些输出
743
144
60
21
32
604
失败
问题内容: 我想解决这个问题。 逗号:分割条款 双引号:字符串值(忽略特殊字符) 数组 例如: 输入: 预期输出: 但是我无法获得超越结果。 我写了下面的代码: 我的输出是: 我需要更改以获得预期的输出?我应该坚持使用正则表达式还是其他解决方案更灵活,更易于维护? 问题答案: 这个正则表达式可以达到目的: 它的工作原理是在逗号后添加一个用于匹配成对的方括号的预读-如果您 位于 方括号内,那么您当然
使用JavaScript,我试图使用正则表达式将段落拆分为句子。我的正则表达式不考虑括号内的句子,我希望保留分隔符。 我在这里放了一个代码示例 jsFiddle.net
问题内容: 我有一个字符串,需要根据出现的“,”(逗号)进行拆分,但是需要忽略在一对括号内出现的任何字符串。例如, 应拆分为 问题答案: 对于非嵌套 嵌套 (括号内的括号)
我有一个表格形式的命令输出。我正在解析结果文件的输出并将其存储在字符串中。一行中的每个元素由一个或多个空格字符分隔,因此我使用正则表达式匹配1个或多个空格并拆分它。但是,在每个元素之间插入一个空格: 还有更好的方法吗? 每次拆分后,str2都会附加到列表中。
问题内容: 我正在尝试使用运算符-+ * /将正则表达式拆分为1.5 + 4.2 *(5 + 2)等式,以便将输出输入到数组中,以便我可以单独解析 我发现可以使用,但是如果我要保留小数点,它将不会拆分。 我已经尝试过分割,但是它不会在小数点上分割 问题答案: 您还可以使用?:避免捕获组。我把它简化了。
字符串示例: 比方说,我想用<代码>来分割这个句子 字符(如果不在<代码> 我一直在使用: 如果不在<代码>