QStringList 类

QStringList 类提供字符串列表。 更多信息...

头文件 #include <QStringList>
CMakefind_package(Qt6 REQUIRED COMPONENTS Core)
target_link_libraries(mytarget PRIVATE Qt6::Core)
qmakeQT += core
继承自 QList

注意: 此类中所有函数都是 可重入的

公共函数

QStringList(const QString &str)
QStringList(const QList<QString> &other)
QStringList(QList<QString> &&other)
boolcontains(const QString &str, Qt::CaseSensitivity cs = Qt::CaseSensitive) const
boolcontains(QLatin1StringView str, Qt::CaseSensitivity cs = Qt::CaseSensitive) const
boolcontains(QStringView str, Qt::CaseSensitivity cs = Qt::CaseSensitive) const
QStringListfilter(const QString &str, Qt::CaseSensitivity cs = Qt::CaseSensitive) const
(自 6.7) QStringListfilter(const QStringMatcher &matcher) const
(自 6.7) QStringListfilter(QLatin1StringView str, Qt::CaseSensitivity cs = Qt::CaseSensitive) const
QStringListfilter(QStringView str, Qt::CaseSensitivity cs = Qt::CaseSensitive) const
QStringListfilter(const QRegularExpression &re) const
qsizetypeindexOf(const QString &str, qsizetype from = 0, Qt::CaseSensitivity cs = Qt::CaseSensitive) const
qsizetypeindexOf(QStringView str, qsizetype from = 0, Qt::CaseSensitivity cs = Qt::CaseSensitive) const
qsizetypeindexOf(QLatin1StringView str, qsizetype from = 0, Qt::CaseSensitivity cs = Qt::CaseSensitive) const
qsizetypeindexOf(const QRegularExpression &re, qsizetype from = 0) const
QStringjoin(const QString &separator) const
QStringjoin(QStringView separator) const
QStringjoin(QLatin1StringView separator) const
QStringjoin(QChar separator) const
qsizetypelastIndexOf(const QString &str, qsizetype from = -1, Qt::CaseSensitivity cs = Qt::CaseSensitive) const
qsizetypelastIndexOf(QStringView str, qsizetype from = -1, Qt::CaseSensitivity cs = Qt::CaseSensitive) const
qsizetypelastIndexOf(QLatin1StringView str, qsizetype from = -1, Qt::CaseSensitivity cs = Qt::CaseSensitive) const
qsizetypelastIndexOf(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)
voidsort(Qt::CaseSensitivity cs = Qt::CaseSensitive)
QStringListoperator+(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。

如果csQt::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。

如果csQt::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)

这是一个重载的功能。

QList<QString> 移动构造。

在成功构造后,other 将为空。

[noexcept] bool QStringList::contains(const QString &str, Qt::CaseSensitivity cs = Qt::CaseSensitive) const

如果列表包含字符串 str,则返回 true;否则返回 false

如果csQt::CaseSensitive(默认值),则字符串比较区分大小写;否则比较不区分大小写。

请参阅:indexOf()、lastIndexOf() 和 QString::contains()

[noexcept] bool QStringList::contains(QLatin1StringView str, Qt::CaseSensitivity cs = Qt::CaseSensitive) const

这是一个重载的功能。

如果列表包含由 str 观看的 Latin-1 字符串,则返回 true;否则返回 false

如果csQt::CaseSensitive(默认值),则字符串比较区分大小写;否则比较不区分大小写。

请参阅:indexOf()、lastIndexOf() 和 QString::contains()

[noexcept] bool QStringList::contains(QStringView str, Qt::CaseSensitivity cs = Qt::CaseSensitive) const

这是一个重载的功能。

如果列表包含字符串 str,则返回 true;否则返回 false

如果csQt::CaseSensitive(默认值),则字符串比较区分大小写;否则比较不区分大小写。

QStringList QStringList::filter(const QString &str, Qt::CaseSensitivity cs = Qt::CaseSensitive) const

返回包含子串 str 的所有字符串的列表。

如果csQt::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文本。

如果csQt::CaseSensitive(默认值),则字符串比较区分大小写;否则比较不区分大小写。

例如

    QStringList list;
    list << "alpha" << "beta" << "gamma" << "epsilon";
    list.replaceInStrings("a", "o");
    // list == ["olpho", "beto", "gommo", "epsilon"]

另见QString::replace

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)

按升序对字符串列表进行排序。

如果csQt::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 iteratorsSTL-style iterators。Java-style 非常数迭代器仅是 QMutableListIterator<QString> 的类型定义。

另请参阅QStringListIteratorQStringList::iterator

[别名] QStringListIterator

QStringListIterator 类型定义提供了一个 Java 风格的常量迭代器,用于 QStringList

QStringList 提供了 Java-style iteratorsSTL-style iterators。Java-style 常数迭代器仅是 QListIterator<QString> 的类型定义。

另请参阅QMutableStringListIteratorQStringList::const_iterator

© 2024 Qt 公司有限公司。此处包含的文档贡献是各自所有者的版权。此处提供的文档是根据自由软件基金会发布的 GNU 自由文档许可证版本 1.3 许可的。Qt 以及相关标志是芬兰和/或其他国家/地区的 Qt 公司的商标。所有其他商标均为其各自所有者的财产。