qt -- QString類及常用函式功能的使用

cc_rong發表於2020-11-21

append() 和 prepend()

append() 在字串的後面新增字串, prepend() 在字串的前面新增字串

QString str = "and";
str.prepend("rock ");     // str == "rock and"
str.append(" roll");        // str == "rock and roll"

 toUpper() 和 toLower()

toUpper() 將字串內的字母全部轉換為大寫,toLower() 將字母全部轉換為小寫,如:

QString str1 = "Hello", str2;
str2 = str1.toUpper(); //str2 = "HELLO"
str2 = str1.toLower(); //str2 = "hello"

count()、size() 和 length()  返回值:int

 count()、size() 和 length() 都返回字串的字元個數,這 3 個函式是相同的,但是要注意,字串中如果有漢字,一個漢字算一個字元。

QString str = "abc"
int N = str1.count()  //N = 3
int N1 = str1.size() //N1 = 3
int N2 = str1.length() //N2 = 3

isNull() 和 isEmpty()   返回值:bool 

都是判斷字串是否為空;如果一個空字串,只有“\0”,isNull() 返回 false,而 isEmpty() 返回 true;只有未賦值的字串,isNull() 才返回 true

QString str1, str2 = "";
bool N = str1.isNull () ; // N = true 未賦值字串變數
bool N1 = str2.isNull (); // N1 = false 只有"\0"的字串,也不是 Null
bool N2 = str1.isEmpty(); // N2 = true
bool N3 = str2.isEmpty(); // N3 = true

字串擷取:

mid(int position, int n = -1) const

兩個引數,第一個是起始位置,第二個是取串的長度。如果省略第二個引數,則會從起始位置擷取到末尾 

QString str = "Nine pineapples";  
QString str1 = str .mid(5, 4);            // str1 = "pine"  
QString str2 = str .mid(5);               // str2 = "pineapples"

left()和rigt()

都接受一個int型別的引數n,都是對字串進行擷取。不同之處在於,left()函式從左側擷取n個字元,而right()從右側開始擷取 。

QString str = "Pineapple";  
QString str1 = str.left(4);      // str1 = "Pine"

字串替換:

replace() :QString &QString::replace(int position, int nQChar after)

用索引的字元替換從索引位置(position)開始的n個字元並返回對此字串的引用。 

QString str = "and";
str.prepend("rock ");     // str == "rock and"
str.append(" roll");        // str == "rock and roll"
str.replace(5, 3, "&");   // str == "rock & roll"

字串插入

QString &QString::insert(int position, const QString &str)

QString str = "Meal";
str.insert(1, QString("ontr"));
// str == "Montreal"

字串切割:

字串分割可以按照空格(“ ”)、逗號(“,”)、頓號(“、”)等進行分割,也可以用正規表示式

section():

QString QString::section(QChar sep, int start, int end = -1, QString::SectionFlags flags = SectionDefault) const

從字串中提取以 sep 作為分隔符,從 start 端到 end 端的字串。

QString str;
QString csv = "forename,middlename,surname,phone";
QString path = "/usr/local/bin/myapp"; // First field is empty
QString::SectionFlag flag = QString::SectionSkipEmpty;

str = csv.section(',', 2, 2);   // str == "surname"
str = path.section('/', 3, 4);  // str == "bin/myapp"
str = path.section('/', 3, 3, flag); // str == "myapp"

split(): 

QStringList QString :: split(const QString sep Qt :: SplitBehavior behavior = Qt :: KeepEmptyParts, 

Qt :: CaseSensitivity cs = Qt :: CaseSensitive)const

sep出現的任何位置將字串拆分為子字串,並返回這些字串的列表。如果sep與字串中的任何地方都不匹配,則split()返回包含此字串的單元素列表。cs指定sep應該區分大小寫還是不區分大小寫。如果行為Qt :: SkipEmptyParts,則空條目不會出現在結果中。預設情況下,保留空條目。

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

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

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

字串查詢:

 indexOf () 和 lastIndexOf ()

intindexOf(QLatin1String str, int from = 0, Qt::CaseSensitivity cs = Qt::CaseSensitive) const

在自身字串內查詢引數字串 str 出現的位置,引數 from 是幵始查詢的位置,Qt::CaseSensitivity cs 引數指定是否區分大小寫。

intlastIndexOf(QChar ch, int from = -1, Qt::CaseSensitivity cs = Qt::CaseSensitive) const

 lastIndexOf() 函式則是查詢某個字串最後出現的位置。

QString str1="G:\Qt5Book\QT5.9Study\qw.cpp";
N = str1.indexOf("5.9");  // N=13
N = str1.lastIndexOf("\\"); //N=21   "\"轉義字元

endsWith() 和 startsWith()

startsWith() 判斷是否以某個字串幵頭,endsWith() 判斷是否以某個字串結束。

QString str1=MG:\Qt5Book\QT5.9Study\qw.cpp";
N=str1.endsWith (".cpp", Qt::CaseInsensitive) ; // N=true,不區分大小寫
N=str1.endsWith (".CPP", Qt::CaseSensitive) ; // N=false,區分大小寫
N=str1.startsWith ("g: ") ; // N=true,預設為不區分大小寫

 

字串去空格:

trimmed() 和 simplified() 

trimmed() 去掉字串首尾的空格,simplified() 不僅去掉首尾的空格,中間連續的空格也用一個空格替換。

相關文章