QString 是 Qt 編程中常用的類,除了用作數字量的輸入輸出之外,QString 還有很多其他功能,熟悉這些常見的功能,有助於靈活地實現字符串處理功能。
QString 存儲字符串釆用的是 Unicode 碼,每一個字符是一個 16 位的 QChar,而不是 8 位的 char,所以 QString 處理中文字符沒有問題,而且一個漢字算作是一個字符。
append() 和 prepend()
append() 在字符串的后面添加字符串,prepend() 在字符串的前面添加字符串,如:
1 QString str1="賣",str2="拐"; 2 QString str3=str1; 3 str1.append (str2) ; //str1="賣拐"
4 str3.prepend (str2) ; //str3="拐賣"
oUpper() 和 toLower()
toUpper() 將字符串內的字母全部轉換為大寫形式,toLower() 將字母全部轉換為小寫形式,如:
1 QString str1="Hello, World", str2; 2 str2=str1.toUpper(); //str1="HELLO,WORLD"
3 str2=str1.toLower(); //str1="hello, world"
count()、size() 和 length()
count()、size() 和 length() 都返回字符串的字符個數,這 3 個函數是相同的,但是要注意,字符串中如果有漢字,一個漢字算一個字符。
1 QString str1="NI 好"
2 N=str1.count() //N=3
3 N=str1.size() //N=3
4 N=str1.length() //N=3
trimmed() 和 simplified()
trimmed() 去掉字符串首尾的空格,simplified() 不僅去掉首尾的空格,中間連續的空格也用一個空格替換。
1 QString str1=" Are you OK? ", str2; 2 str2=str1.trimmed () ; //str1="Are you OK? "
3 str2=str1.simplified(); //str1="Are you OK?"
indexOf () 和 lastIndexOf ()
indexOf() 函數的原型為:
int indexOf (const QString &str, int from = 0 , Qt::CaseSensitivity cs = Qt::CaseSensitive) const
其功能是在自身字符串內查找參數字符串 str 出現的位置,參數 from 是幵始查找的位置,Qt::CaseSensitivity cs 參數指定是否區分大小寫。
lastIndexOf() 函數則是查找某個字符串最后出現的位置。
1 QString str1="G:\Qt5Book\QT5.9Study\qw.cpp"; 2 N=str1.indexOf("5.9"); // N=13
3 N=str1.lastIndexOf("\\"); //N=21
提示,"\" 是轉義字符,如果要查找 "\",需要輸入 "\\"。
isNull() 和 isEmpty()
兩個函數都判讀字符串是否為空,但是稍有差別。如果一個空字符串,只有“\0”,isNull() 返回 false,而 isEmpty() 返回 true;只有未賦值的字符串,isNull() 才返回 true。
1 QString str1, str2=""; 2 N=str1.isNull () ; // N=true 未賦值字符串變量
3 N=str2.isNull () ; // N=false 只有"\0"的字符串,也不是 Null
4 N=str1.isEmpty(); // N=true
5 N=str2.isEmpty(); // N=true
QString 只要賦值,就在字符串的末尾自動加上 "\0",所以,如果只是要判斷字符串內容是否為空,常用 isEmpty()。
contains()
判斷字符串內是否包含某個字符串,可指定是否區分大小寫。
1 QString str1="G:\Qt5Book\QT5.9Study\qw.cpp"; 2 N=str1.contains (".cpp", Qt::CaseInsensitive) ; // N=true,不區分大小寫
3 N=str1.contains (".CPP", Qt::CaseSensitive) ; // N=false,區分大小寫
endsWith() 和 startsWith()
startsWith() 判斷是否以某個字符串幵頭,endsWith() 判斷是否以某個字符串結束。
1 QString str1=MG:\Qt5Book\QT5.9Study\qw.cpp";
2 N=str1.endsWith (".cpp", Qt::CaseInsensitive) ; // N=true,不區分大小寫
3 N=str1.endsWith (".CPP", Qt::CaseSensitive) ; // N=false,區分大小寫
4 N=str1.startsWith ("g: ") ; // N=true,缺省為不區分大小寫
left() 和 right()
left 表示從字符串中取左邊多少個字符,right 表示從字符串中取右邊多少個字符。注意,一個漢字被當作一個字符。
1 QString str2, str1="學生姓名,男,1984-3-4,漢族,山東"; 2 N=str1.indexOf (",") ; // N=4,第一個","出現的位置
3 str2=str1.left (N) ; //str2="學生姓名"
4 N=str1.lastIndexOf (",") ; // N=18,最后一個逗號的位置
5 str2=str1.right (str1.size()-N-1); //str2=”山東",提取最后一個逗號之后的字符串
section()
section() 函數的原型為:
QString section (const QString &sep, int start, int end = -1, SectionFlags flags = SectionDefault) const
其功能是從字符串中提取以 sep 作為分隔符,從 start 端到 end 端的字符串。
1 QString str2, str1="學生姓名,男,1984-3-4,漢族,山東"; 2 str2=str1.section (",",0,0); // str2="學生姓名", 第 1 段的編號為 0
3 str2=str1.section (",",1,1}; // str2="男"
4 str2=str1.section (",",0,1}; // str2="學生姓名,男"
5 str2=str1.section (",",4,4); // str2="山東"
QString 還有很多功能函數沒有在此介紹,在使用中如果遇到,可查詢 Qt 的幫助文件。