Qt 字符串截取常用函数

1、bool QString::startsWith  // 字符串以XX开头,返回true,第二个参数可以设置大小写敏感

QString str = "Bananas";
str.startsWith("Ban");     // returns true
str.startsWith("Car");     // returns false

 

2、bool QString::endsWith  // 字符串以XX结尾,返回false,第二个参数可以设置大小写敏感

QString str = "Bananas";
str.endsWith("anas");         // returns true
str.endsWith("pple");         // returns false

 

3、QString QString::trimmed()  // 返回前后没有空格的字符串

QString str = "  lots\t of\nwhitespace\r\n ";
str = str.trimmed();
// str == "lots\t of\nwhitespace"

 

4、QString &QString::remove(int position, int n)  // 指定位置开始删除n个字符,返回该字符引用

QString s = "Montreal";
s.remove(1, 4);
// s == "Meal"

 

5、int QString::indexOf()  // 返回从指定位置开始第一次出现的索引位置,未找到返回-1。第二个参数可以设置大小写敏感

QString x = "sticky question";
QString y = "sti";
x.indexOf(y);               // returns 0
x.indexOf(y, 1);            // returns 10
x.indexOf(y, 10);           // returns 10
x.indexOf(y, 11);           // returns -1

 

6、int QString::lastIndexOf() 

// 返回此字符串中字符串str的最后一次出现的索引位置,从索引位置向后搜索。如果from是-1(默认值),搜索从最后一个字符开始;如果from是-2,则在倒数第二个字符处,依此类推。如果没有找到str,则返回-1。第二个参数可以设置大小写敏感

QString x = "crazy azimuths";
QString y = "az";
x.lastIndexOf(y);           // returns 6
x.lastIndexOf(y, 6);        // returns 6
x.lastIndexOf(y, 5);        // returns 2
x.lastIndexOf(y, 1);        // returns -1

 

7、QString QString::right(int n) const  // 返回包含该字符串的最右n个字符的子字符串。

QString x = "Pineapple";
QString y = x.right(5);      // y == "apple"

 

8、QString QString::left(int n) const  // 返回包含该字符串的最左n个字符的子字符串。

QString x = "Pineapple";
QString y = x.left(4);      // y == "Pine"

 

9、QString QString::mid(int position, int n = -1) const  // 返回一个包含该字符串的n个字符的字符串,从指定的位置索引开始。

QString x = "Nine pineapples";
QString y = x.mid(5, 4);            // y == "pine"
QString z = x.mid(5);               // z == "pineapples"

 

10、QStringList QString::split(const QString &sep, Qt::SplitBehavior behavior = Qt::KeepEmptyParts, Qt::CaseSensitivity cs = Qt::CaseSensitive) const  //    在sep出现的地方将字符串分割成子字符串,并返回这些字符串的列表。可以设置大小写敏感

QString str = QStringLiteral("a,,b,c");

 QStringList list1 = str.split(QLatin1Char(','));
 // list1: [ "a", "", "b", "c" ]

 QStringList list2 = str.split(QLatin1Char(','), Qt::SkipEmptyParts);
 // list2: [ "a", "b", "c" ]

 

练习:

提取“[]”中的数据

    QStringList list;
    QString tempStr;
    bool judge = false;

    QString str = "dsgdsg%$%^$[111]dfdff[2222](*&*([12346]))  dg[3333]  788 dddd";
    int a[] = {0,1,2};
    foreach(auto ch, str)
    {
        if(judge)
            tempStr += ch;
        if(ch == '[')
            judge = true;
        if(ch == ']')
        {
            judge = false;
            list.append(tempStr.left(tempStr.indexOf(']')));
            tempStr.clear();
        }
    }

    foreach(auto s, list)
    {
        qDebug()<<s;  //  输出"111""2222""12346""3333"

    }

 

posted @ 2020-03-06 00:30  补码  阅读(10830)  评论(0编辑  收藏  举报