Qt中對QString的操作

將一個字符串追加到另一個字符串的末尾

QString str1 = "hello ";
QString str2 = "world";
str1.append(str2);                   // str1 = "hello world"
str1.append(" !");                   // str1 = "hello world !"
// 對字符串直接 + 另一個字符串也可以實現,但是不對原本的字符串進行操作
QString str3 = str1 + str2 + " !";   // str3 = "hello world !"   str1 = "hello "

從字符串中查找某個字符串

QString x = "sticky question";
QString y = "sti";
x.indexOf(y);              // 返回0
// 函數indexOf()會返回要查找的字符串在字符串中第一次出現的位置
// 如果沒有要查找的字符串,返回-1

用某個字符填滿字符串

QString str = "Hello";
str.fill('x');             // str == "xxxxx"
str.fill('A', 2);          // str == "AA"

判斷字符串是否爲空

QString().isEmpty();            // 返回 true
QString("").isEmpty();          // 返回 true
QString(" ").isEmpty();         // 返回 false
QString("abc").isEmpty();       // 返回 false

判斷字符串是否存在

QString().isNull();             // 返回 true
QString("").isNull();           // 返回 false
QString("abc").isNull();        // 返回 false

從左向右截取字符串

QString str = "Hello World !";
QString str1 = str.left(5);         // str1 = "Hello"

從中間截取字符串

QString str = "I love C++!";
QString str1 = str.mid(2, 4);       // str1 == "love"
QString str2 = str.mid(2);          // str2 == "love C++!"

截取字符串中最右邊幾個字符

QString str = "I love C++!";
QString str1 = str.right(4);        // str = I love C++! str1 = "C++!" 

刪除字符串中的最後幾個字符

QString str = "Hello World !";
str.chop(8);                        // str = "Hello" 

刪除字符串中間某個字符

QString str = "Hello World!";
str.remove(5, 6);                   // str = "Hello!"

指定位置插入字符串

QString str = "Hello!";
str.insert(5, QString(" World"));   // str = "Hello World!"

用幾個字符替換字符串中的幾個字符

QString x = "Say yes!";
QString y = "no";
x.replace(4, 3, y);                 // x = "Say no!"
x.replace("yes", "no");             // x = "Say no!"

字符串補零到指定位

QString str = "A6";
//如果要把str補全到8位,空位用0補全
QString str1 = QString("%1").arg(str, 8, QLatin1Char('0'));    //str1 = "000000A6"
//arg裏第一個參數是要補全的字符串,第二個參數是要補全到的位數,第三個參數是用什麼字符補全,可以不是0的其他字符

整型十進制轉爲十六進制字符串並補零到指定位

int n = 66;
//如果要把n轉換爲十六進制並補全到8位
QString str = QString("%1").arg(n, 8, 16, QLatin1Char('0'));   // str = "00000042"
//arg裏第一個參數是十進制整型的數,第二個參數是要補全到的位數,第三個參數是要轉換的進制,可以是十六進制也可以是十進制
//第四個參數是用什麼字符補全,可以不是0的其他字符

以某個字符切割字符串

QString csv = "forename,middlename,surname,phone";
QString path = "/usr/local/bin/myapp";
//section()會把字符串以第一個參數的符號切割分成數個字符串,後面兩個參數是得到的字符串的開始和結束的位置
QString str;
str = csv.section(',', 2, 2);       // str = "surname"
str = path.section('/', 3, 3);      // str = "bin"
str = path.section('/', 3, 4);      // str = "bin/myapp"
str = path.section('/', 3, 3, QString::SectionSkipEmpty);      // str = "myapp"

以某個字符切割字符串另一種方法

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

檢查字符串是否以某個字符串開頭或結尾

QString str = "http://www.baidu.com";
str.startsWith("http:");            // 返回true
str.endsWith("cn");                 // 返回false
//這個方法比left()和right()要簡單快速,通常用來檢查路徑或者網址

比較兩個字符串是否相等

QString str1 = "xxx";
QString str2 = "XXX";
 
//localeAwareCompare()會比較兩個參數的大小,如果str1小於str2,返回小於0的數,等於返回0,大於返回大於0的數
QString::localeAwareCompare(str1, str2)          // 返回 -1
 
//localeAwareCompare()的比較區分大小寫,想要不區分大小寫,可以使用toLower()或toUpper()使字符串全變成小寫或大寫
if(QString::localeAwareCompare(str1.toUpper(), str2) == 0)
{
    qDebug() << "str1和str2相等";                // 返回0,輸出:str1和str2相等
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章