qt -- QString类及常用函数功能的使用(字符串截取,替换,查找,切割)

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() 不仅去掉首尾的空格,中间连续的空格也用一个空格替换。

  • 4
    点赞
  • 42
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值