【发布时间】:2019-02-18 11:51:19
【问题描述】:
我有一个文本文件,我需要将每一行转换为整数。
行可以以“#”开头表示注释。此外,在数据之后,它也可能是内联注释...再次用“#”表示
所以我有下面的例子:
QString time = "5000 #this is 5 seconds"; // OK
QString time = " 5000 # this is 5 seconds"; // OK..free spaceis allowed at start
QString time = "5000.00 #this is 5 seconds"; // invalid...no decimal
QString time = "s5000 # this is 5 seconds"; // invalid...does not start with numerical character
我该如何处理这些情况?我的意思是在上面的所有 4 个示例中,除了最后两个我需要提取“5000”。如何查出最后一个无效?
所以我的意思是处理这项任务的最佳防故障代码是什么?
【问题讨论】:
-
您在代码中的评论说最后两个无效,而在帖子中您说只有最后一个无效?正确的说法是什么?
-
1:正则表达式,2:boost.spirit解析器,3:其他解析器。
-
您要使用的正则表达式是
[0-9]\+。如果匹配,请使用QString::toInt。 -
@PushpeshKumarRajwanshi 现已更正
-
您也许可以使用
QTime而不是QString,然后您会让编译器为您验证它。