有一组字符串:
{"L5A90E","L46c80","L5A91E","L46C80"}
希望经过排序后的结果为:
("L5A90E", "L5A91E", "L46c80", "L46C80")
代码如下:
void stringListSortDemo(void)
{
QStringList sl = {"L5A90E","L46c80","L5A91E","L46C80"};
QCollator collator;
collator.setNumericMode(true); // 数字模式
collator.setCaseSensitivity(Qt::CaseInsensitive); // 大小写敏感
std::sort(sl.begin(), sl.end(), collator);///< 使用std::sort函数
qDebug() << sl; // 输出("L5A90E", "L5A91E", "L46c80", "L46C80")
}
另外网上一种支持中文排序的配置为:
void stringListSortDemo(void)
{
QStringList sl = {"人L5A90E","啊L46c80","L5A91E","L46C80"};
QCollator collator(QLocale(QLocale::Chinese));// < 选择语言为中文
collator.setNumericMode(true);
collator.setCaseSensitivity(Qt::CaseInsensitive);
std::sort(sl.begin(), sl.end(), collator);// < 使用std::sort函数
DLOGFL() << sl; // 输出("L5A91E", "L46C80", "啊L46c80", "人L5A90E")
}