如何读取分号将某些值与 QString 分开
How to read semicolon separated certain values from a QString?
我正在使用Qt/KDE开发一个应用程序。在为此编写代码时,我需要读取包含类似(;
分隔)的值的 QString
<http://example.com/example.ext.torrent>; rel=describedby; type="application/x-bittorrent"; name="differentname.ext"
我需要将每个属性(如rel,类型和名称)读取到不同的QString
中。到目前为止,我采取的分配是这样的
if (line.contains("describedby")) {
m_reltype = "describedby" ;
}
if (line.contains("duplicate")) {
m_reltype = "duplicate";
}
也就是说,如果我只需要为属性的存在(而不是其值)而烦恼,我正在手动查找文本并设置该属性是否存在。但是,对于"类型"和名称等属性,此方法失败,其实际值需要存储在QString
中。虽然我知道这可以通过在分隔符;
拆分整个字符串然后搜索属性或其值来完成,但我想知道是否有一种更干净、更有效的方法。
据我了解,数据并不总是 URL。所以
1:拆分字符串
2:对于每个子字符串,将标识符与值分开:
id = str.mid(0,str.indexOf("="));
value = str.mid(str.indexOf("=")+1);
您还可以使用正则表达式:
regexp = "^([a-z]+)s*=s*(.*)$";
id = 1 of the regexp;
value = 2 of the regexp;
我需要将每个属性(如rel,类型和名称)读取到不同的QString中。
是否可以保证此字符串将始终是 URL?
我想知道是否有一种更清洁、更有效的方法。
不要重新发明轮子!您可以使用QURL::queryItems
来分析这些查询变量并返回名称-值对的映射。
但是,请确保您的字符串是格式正确的 URL(以便 QURL
不会拒绝它)。
相关文章:
- 将 Qvector<uint8_t> 转换为 QString
- 如何通过按下第三个窗口中的按钮,将QString从一个窗口获取到另一个窗口
- QStringList vs list<shared_ptr<QString>> 性能比较C++
- 将 hh:mm:ss.zzz 时间 QString 转换为毫秒的单行函数?
- 逗号在重载 ostream 和 istream 在结构中分开
- CUDA - 将 float3 数组的 (x,y,z) 分量的最小值/最大值分开?
- Qt C++ 如何在 1 个命令中砍掉属于 QStringList 成员的 QString 字母
- 为什么使用 QString::right 在字符串开头省略逗号?
- Qt:更新 QString 时自动生成的代码失败
- 如何将 QString 的 QList 分配给列表视图?
- 加倍到 QString 并保存在 QJsonDocument 中
- 如何将包含指数的 QString 转换为C++中的双倍?
- 是否可以直接将QString输入(例如)googletest的ADD_FAILURE()宏?
- 如何从 QString 中包含的十六进制值中获取 ASCII 字符?
- 在 c++ 中将 HP 和 Attack 变量与 Character 类分开?
- 将 QAction 的 QString 文本作为参数传递
- 如何计算QString开头的重复字符?
- 将 nullptr QVariant 与空 QString 进行比较,在 Qt5.9 和 Qt5.12 中给出了不同的输
- 在Qt-cpp中通过像素获取QString的子字符串
- 如何读取分号将某些值与 QString 分开