我的QString格式类似于QString word = "123,12,1,"This is, a test";
(从CSV文件中提取)。我想在每个逗号分开它,不包括最后一个单元格中字符串中的任何逗号。该列表与{"123", "12", "1", "\"This is, a test\""}
类似。
格式是一个最多包含3位数的数字,然后是一个最多包含2位数的数字,然后是一个最多包含1位数的数字,后跟一个可以包含逗号的字符串。列表中应始终有4个QStrings。这是我正在尝试的
QString word = "123,12,1,\"This is, a test\"";
QStringList list = word.split( QRegExp( "(\\d+)," ) );
我从here获得了此代码。此代码仅保存列表中的第4个QString,前3个为空白。有人可以帮帮我吗?我从未使用过正则表达式。
由于
答案 0 :(得分:1)
这会有用吗?
编辑 - 这是一个小测试。
如果您没有得到预期的结果,那么无法使用QT的分割。
您应该在while循环中解析它以填充列表。
QString str = "\"123,12,1,\"This is, a test\"";
QStringList list =
str.split(
QRegExp("(\"[^\"\\\\]*(?:\\\\[\\S\\s][^\"\\\\]*)*\"|\\d+)|,"),
QString::SkipEmptyParts
);
答案 1 :(得分:0)
该正则表达式仅适用于数字。你应该使用像
这样的东西QRegExp( "[A-Za-z\\d]+," )
答案 2 :(得分:0)