QStringList 类
QStringList 类提供字符串列表。 更多信息...
头文件 | #include <QStringList> |
CMake | find_package(Qt6 REQUIRED COMPONENTS Core) target_link_libraries(mytarget PRIVATE Qt6::Core) |
qmake | QT += core |
继承自 | QList |
- 包含所有成员,包括继承成员
- QStringList 是 隐式共享类 和 字符串数据处理类 的一部分。
注意: 此类中所有函数都是 可重入的。
公共函数
QStringList(const QString &str) | |
QStringList(const QList<QString> &other) | |
QStringList(QList<QString> &&other) | |
bool | contains(const QString &str, Qt::CaseSensitivity cs = Qt::CaseSensitive) const |
bool | contains(QLatin1StringView str, Qt::CaseSensitivity cs = Qt::CaseSensitive) const |
bool | contains(QStringView str, Qt::CaseSensitivity cs = Qt::CaseSensitive) const |
QStringList | filter(const QString &str, Qt::CaseSensitivity cs = Qt::CaseSensitive) const |
(自 6.7) QStringList | filter(const QStringMatcher &matcher) const |
(自 6.7) QStringList | filter(QLatin1StringView str, Qt::CaseSensitivity cs = Qt::CaseSensitive) const |
QStringList | filter(QStringView str, Qt::CaseSensitivity cs = Qt::CaseSensitive) const |
QStringList | filter(const QRegularExpression &re) const |
qsizetype | indexOf(const QString &str, qsizetype from = 0, Qt::CaseSensitivity cs = Qt::CaseSensitive) const |
qsizetype | indexOf(QStringView str, qsizetype from = 0, Qt::CaseSensitivity cs = Qt::CaseSensitive) const |
qsizetype | indexOf(QLatin1StringView str, qsizetype from = 0, Qt::CaseSensitivity cs = Qt::CaseSensitive) const |
qsizetype | indexOf(const QRegularExpression &re, qsizetype from = 0) const |
QString | join(const QString &separator) const |
QString | join(QStringView separator) const |
QString | join(QLatin1StringView separator) const |
QString | join(QChar separator) const |
qsizetype | lastIndexOf(const QString &str, qsizetype from = -1, Qt::CaseSensitivity cs = Qt::CaseSensitive) const |
qsizetype | lastIndexOf(QStringView str, qsizetype from = -1, Qt::CaseSensitivity cs = Qt::CaseSensitive) const |
qsizetype | lastIndexOf(QLatin1StringView str, qsizetype from = -1, Qt::CaseSensitivity cs = Qt::CaseSensitive) const |
qsizetype | lastIndexOf(const QRegularExpression &re, qsizetype from = -1) const |
qsizetype | 移除重复项() |
QStringList & | replaceInStrings(const QString &before, const QString &after, Qt::CaseSensitivity cs = Qt::CaseSensitive) |
QStringList & | replaceInStrings(QStringView before, QStringView after, Qt::CaseSensitivity cs = Qt::CaseSensitive) |
QStringList & | replaceInStrings(const QString &before, QStringView after, Qt::CaseSensitivity cs = Qt::CaseSensitive) |
QStringList & | replaceInStrings(QStringView before, const QString &after, Qt::CaseSensitivity cs = Qt::CaseSensitive) |
QStringList & | replaceInStrings(const QRegularExpression &re, const QString &after) |
void | sort(Qt::CaseSensitivity cs = Qt::CaseSensitive) |
QStringList | operator+(const QStringList &other) const |
QStringList & | operator<<(const QString &str) |
QStringList & | operator<<(const QStringList &other) |
QStringList & | operator<<(const QList<QString> &other) |
QStringList & | operator=(const QList<QString> &other) |
QStringList & | operator=(QList<QString> &&other) |
相关非成员函数
详细描述
QStringList 继承自 QList<QString>。与 QList 类似,QStringList 是 隐式共享的。它提供了快速的基于索引的访问以及快速的插入和删除。以值参数的形式传递字符串列表既快又安全。
QList 的所有功能也适用于 QStringList。例如,您可以使用 isEmpty() 测试列表是否为空,您还可以调用类似 append()、prepend()、insert()、replace()、removeAll()、removeAt()、removeFirst()、removeLast() 和 removeOne() 的函数来修改 QStringList。此外,QStringList 还提供了一些方便的函数,可以更轻松地处理字符串列表
初始化
默认构造函数创建一个空列表。您可以使用初始化列表构造函数来创建包含元素的列表
QStringList fonts = { "Arial", "Helvetica", "Times" };
添加字符串
您可以使用 insert()、append()、operator+=() 和 operator<<() 函数将字符串添加到列表中。
operator<<() 可以方便地将多个元素添加到列表中
fonts << "Courier" << "Verdana";
遍历字符串
请参阅 遍历容器。
操作字符串
QStringList 提供了几个函数,允许您操作列表的内容。您可以使用 join() 函数将字符串列表中的所有字符串连接成一个单个字符串(可选分隔符)。例如
QString str = fonts.join(", "); // str == "Arial, Helvetica, Times, Courier"
join 的参数可以是单个字符或字符串。
要将字符串拆分为字符串列表,请使用 QString::split() 函数。
QStringList list; list = str.split(','); // list: ["Arial", "Helvetica", "Times", "Courier"]
split函数的参数可以是单个字符、字符串或QRegularExpression。
此外,operator+() 函数允许您将两个字符串列表连接为一个。要排序字符串列表,请使用 sort() 函数。
QString列表还提供filter() 函数,可以提取一个新列表,其中只包含包含特定子字符串(或匹配特定正则表达式)的字符串。
QStringList monospacedFonts = fonts.filter(QRegularExpression("Courier|Fixed"));
contains()函数会告诉您列表是否包含给定的字符串,而indexOf()函数返回给定字符串的第一个出现的索引。另一方面,lastIndexOf()函数返回字符串的最后一个出现的索引。
最后,replaceInStrings()函数将 QtString::replace()依次应用到字符串列表中的每个字符串上。例如
QStringList files; files << "$QTDIR/src/moc/moc.y" << "$QTDIR/src/moc/moc.l" << "$QTDIR/include/qconfig.h"; files.replaceInStrings("$QTDIR", "/usr/lib/qt"); // files: [ "/usr/lib/qt/src/moc/moc.y", ...]
另请参阅:QString。
成员函数文档
[noexcept]
qsizetype QStringList::indexOf(QLatin1StringView str, qsizetype from = 0, Qt::CaseSensitivity cs = Qt::CaseSensitive) const
[noexcept]
qsizetype QStringList::indexOf(QStringView str, qsizetype from = 0, Qt::CaseSensitivity cs = Qt::CaseSensitive) const
[noexcept]
qsizetype QStringList::indexOf(const QString &str, qsizetype from = 0, Qt::CaseSensitivity cs = Qt::CaseSensitive) const
返回str在列表中第一次匹配的索引位置,从索引位置from开始向前搜索。如果未找到匹配项,返回 -1。
如果cs是Qt::CaseSensitive(默认值),则字符串比较区分大小写;否则比较不区分大小写。
注意:cs参数是在 Qt 6.7 中添加的,即这些方法现在重载了从基类继承的方法。在此之前,这些方法只有一个参数。此更改是源兼容的,现有代码应继续工作。
另请参阅:lastIndexOf()。
[noexcept]
qsizetype QStringList::lastIndexOf(QLatin1StringView str, qsizetype from = -1, Qt::CaseSensitivity cs = Qt::CaseSensitive) const
[noexcept]
qsizetype QStringList::lastIndexOf(QStringView str, qsizetype from = -1, Qt::CaseSensitivity cs = Qt::CaseSensitive) const
[noexcept]
qsizetype QStringList::lastIndexOf(const QString &str, qsizetype from = -1, Qt::CaseSensitivity cs = Qt::CaseSensitive) const
返回列表中 str 最后匹配项的索引位置,从索引位置 from 向后搜索。如果 from 即为 -1(默认值),则从最后一个条目开始搜索。如果没有匹配的条目,则返回 -1。
如果cs是Qt::CaseSensitive(默认值),则字符串比较区分大小写;否则比较不区分大小写。
注意:cs参数是在 Qt 6.7 中添加的,即这些方法现在重载了从基类继承的方法。在此之前,这些方法只有一个参数。此更改是源兼容的,现有代码应继续工作。
请参阅:indexOf()
QStringList::QStringList(const QString &str)
创建一个包含指定字符串 str 的字符串列表。可以通过这种方式轻松创建更长的列表
QStringList longerList = (QStringList() << str1 << str2 << str3);
请参阅:append()
QStringList::QStringList(const QList<QString> &other)
创建 other 的副本。
此操作的时间复杂度为 常数时间,因为 QStringList 是 隐式共享。这使得从函数中返回 QStringList 非常快。如果共享实例被修改,它将被复制(写时复制),这个过程的时间复杂度为 线性时间。
请参阅:operator=()
QStringList::QStringList(QList<QString> &&other)
这是一个重载的功能。
在成功构造后,other 将为空。
[noexcept]
bool QStringList::contains(const QString &str, Qt::CaseSensitivity cs = Qt::CaseSensitive) const
如果列表包含字符串 str,则返回 true
;否则返回 false
。
如果cs是Qt::CaseSensitive(默认值),则字符串比较区分大小写;否则比较不区分大小写。
请参阅:indexOf()、lastIndexOf() 和 QString::contains()
[noexcept]
bool QStringList::contains(QLatin1StringView str, Qt::CaseSensitivity cs = Qt::CaseSensitive) const
这是一个重载的功能。
如果列表包含由 str 观看的 Latin-1 字符串,则返回 true
;否则返回 false
。
如果cs是Qt::CaseSensitive(默认值),则字符串比较区分大小写;否则比较不区分大小写。
请参阅:indexOf()、lastIndexOf() 和 QString::contains()
[noexcept]
bool QStringList::contains(QStringView str, Qt::CaseSensitivity cs = Qt::CaseSensitive) const
这是一个重载的功能。
如果列表包含字符串 str,则返回 true
;否则返回 false
。
如果cs是Qt::CaseSensitive(默认值),则字符串比较区分大小写;否则比较不区分大小写。
QStringList QStringList::filter(const QString &str, Qt::CaseSensitivity cs = Qt::CaseSensitive) const
返回包含子串 str 的所有字符串的列表。
如果cs是Qt::CaseSensitive(默认值),则字符串比较区分大小写;否则比较不区分大小写。
QStringList list; list << "Bill Murray" << "John Doe" << "Bill Clinton"; QStringList result; result = list.filter("Bill"); // result: ["Bill Murray", "Bill Clinton"]
这等价于
QStringList result; for (const auto &str : std::as_const(list)) { if (str.contains("Bill")) result += str; }
también consulte contains().
[desde 6.7]
QStringList QStringList::filter(const QStringMatcher &matcher) const
这是一个重载的功能。
返回与 matcher 匹配的所有字符串列表(即对于哪个 matcher.indexIn()
返回的索引 >= 0)。
在大型列表或包含长字符串的列表中搜索时,使用 QStringMatcher 可能更快(最好的方法是通过基准测试来找出)。
例如
QStringList veryLongList; QStringMatcher matcher(u"Straße", Qt::CaseInsensitive); QStringList filtered = veryLongList.filter(matcher);
该功能已在 Qt 6.7 中引入。
también consulte contains().
[desde 6.7]
QStringList QStringList::filter(QLatin1StringView str, Qt::CaseSensitivity cs = Qt::CaseSensitive) const
这是一个重载的功能。
该功能已在 Qt 6.7 中引入。
QStringList QStringList::filter(QStringView str, Qt::CaseSensitivity cs = Qt::CaseSensitive) const
这是一个重载的功能。
QStringList QStringList::filter(const QRegularExpression &re) const
这是一个重载的功能。
返回与正则表达式 re 匹配的所有字符串列表。
qsizetype QStringList::indexOf(const QRegularExpression &re, qsizetype from = 0) const
这是一个重载的功能。
返回列表中 re 第一个完全匹配的位置索引,从索引位置 from 开始搜索。如果没有项目匹配,则返回 -1。
另请参阅:lastIndexOf()。
QString QStringList::join(const QString &separator) const
将字符串列表的所有字符串连接为一个单独的字符串,每个元素由给定的 separator 分隔(可以是空字符串)。
also see QString::split().
QString QStringList::join(QStringView separator) const
这是一个重载的功能。
QString QStringList::join(QLatin1StringView separator) const
This function overloads join().
qchar.html#QChar QStringList::join(QChar separator) const
This function overloads join().
qsizetype QStringList::lastIndexOf(const QRegularExpression &re, qsizetype from = -1) const
这是一个重载的功能。
返回列表中 re 最后一个完全匹配的位置索引,从索引位置 from 开始反向搜索。如果 from 是 -1(默认值),则搜索从最后一项开始。如果没有项目匹配,则返回 -1。
请参阅:indexOf()
qsizetype QStringList::removeDuplicates()
此函数从列表中删除重复条目。条目不需要排序。它们将保留其原始顺序。
返回删除的条目数量。
QStringList &QStringList::replaceInStrings(const QString &before, const QString &after, Qt::CaseSensitivity cs = Qt::CaseSensitive)
返回一个字符串列表,其中每个字符串都将找到的before文本替换为after文本。
如果cs是Qt::CaseSensitive(默认值),则字符串比较区分大小写;否则比较不区分大小写。
例如
QStringList list; list << "alpha" << "beta" << "gamma" << "epsilon"; list.replaceInStrings("a", "o"); // list == ["olpho", "beto", "gommo", "epsilon"]
QStringList &QStringList::replaceInStrings(QStringView before, QStringView after, Qt::CaseSensitivity cs = Qt::CaseSensitive)
这是一个重载的功能。
QStringList &QStringList::replaceInStrings(const QString &before, QStringView after, Qt::CaseSensitivity cs = Qt::CaseSensitive)
这是一个重载的功能。
QStringList &QStringList::replaceInStrings(QStringView before, const QString &after, Qt::CaseSensitivity cs = Qt::CaseSensitive)
这是一个重载的功能。
QStringList &QStringList::replaceInStrings(const QRegularExpression &re, const QString &after)
这是一个重载的功能。
将字符串列表中的每个字符串中的正则表达式re的每个出现替换为after。返回字符串列表的引用。
例如
QStringList list; list << "alpha" << "beta" << "gamma" << "epsilon"; list.replaceInStrings(QRegularExpression("^a"), "o"); // list == ["olpha", "beta", "gamma", "epsilon"]
对于包含捕获组的正则表达式,after中的\1、\2、...等将替换为由相应的捕获组捕获的字符串。
例如
QStringList list; list << "Bill Clinton" << "Murray, Bill"; list.replaceInStrings(QRegularExpression("^(.*), (.*)$"), "\\2 \\1"); // list == ["Bill Clinton", "Bill Murray"]
void QStringList::sort(Qt::CaseSensitivity cs = Qt::CaseSensitive)
按升序对字符串列表进行排序。
如果cs是Qt::CaseSensitive(默认值),则字符串比较区分大小写;否则比较不区分大小写。
排序是使用STL的std::sort()算法完成的,该算法平均为线性对数时间,即O(n log n)。
如果您想按任意顺序对字符串进行排序,请考虑使用QMap类。例如,您可以使用QMap<QString, QString> 创建不区分大小写的排序(例如,键为字符串的小写版本,值为字符串),或者使用QMap<int, QString> 来根据某些整数索引排序字符串。
QStringList QStringList::operator+(const QStringList &other) const
返回一个字符串列表,它是此字符串列表与other字符串列表的连接。
请参阅:append()
QStringList &QStringList::operator<<(const QString &str)
将指定的字符串 str 添加到字符串列表中,并返回字符串列表的引用。
请参阅:append()
QStringList &QStringList::operator<<(const QStringList &other)
这是一个重载的功能。
将 other 字符串列表追加到字符串列表中,并返回后者的引用。
QStringList &QStringList::operator<<(const QList<QString> &other)
这是一个重载的功能。
将 other 字符串列表追加到字符串列表中,并返回后者的引用。
QStringList &QStringList::operator=(const QList<QString> &other)
从 QList<QString> 复制的赋值运算符。将 other 的字符串列表赋值给此字符串列表。
操作后,other 和 *this
将相等。
QStringList &QStringList::operator=(QList<QString> &&other)
这是一个重载的功能。
从 QList<QString> 复制的赋值运算符。将 other 的字符串列表移动到此字符串列表。
操作后,other 将为空。
相关非成员
[别名]
QMutableStringListIterator
QStringListIterator 类型定义提供了一个 Java 风格的非 const 迭代器,用于 QStringList。
QStringList 提供了 Java-style iterators 和 STL-style iterators。Java-style 非常数迭代器仅是 QMutableListIterator<QString> 的类型定义。
另请参阅QStringListIterator 和 QStringList::iterator。
[别名]
QStringListIterator
QStringListIterator 类型定义提供了一个 Java 风格的常量迭代器,用于 QStringList。
QStringList 提供了 Java-style iterators 和 STL-style iterators。Java-style 常数迭代器仅是 QListIterator<QString> 的类型定义。
另请参阅QMutableStringListIterator 和 QStringList::const_iterator。
© 2024 Qt 公司有限公司。此处包含的文档贡献是各自所有者的版权。此处提供的文档是根据自由软件基金会发布的 GNU 自由文档许可证版本 1.3 许可的。Qt 以及相关标志是芬兰和/或其他国家/地区的 Qt 公司的商标。所有其他商标均为其各自所有者的财产。