QString字符串截取(section,正则表达式)

一.section函数

1.1 语法格式

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

1.2 使用示例

类似split函数,先分隔,再按编号从左到右截取(负号为从右到左,可理解换算成从左到右的正编号,依然从左往右截取)

QString sPath = QString("E:/Data/20210218/Section/test_00501_CH1.jpg");

//A 正号截取
QString sDate = sPath.section('/',0,2);  //E:/Data/20210218(获取文件前三级路径)

//B 负号截取,仍从左往右
QString sCh = sPath.section('_',-2);     //00501_CH1.jpg
QString sCh = sPath.section('_',-2,-2);  //00501

//C 正号+负号截取
QString sDate = sPath.section('/',0,-2); //E:/Data/20210218/Section(获取文件所在的上级路径)
QString sDate = sPath.section('/',0,-3); //E:/Data/20210218(获取文件所在的上上级路径)

二.正则表达式

1.1 参考链接

QString用正则表达式子过滤

1.2 使用示例(提取字符串中数字)

QString sName = QString("test_00501_CH1.jpg");

QRegExp qreg_exp("[^0-9]");  //数字以外的字符,等效于"\D"
QRegExp qreg_exp("\\D");     //数字以外的字符,window下\为转义字符,用\\表示\            
QString new_str = sName.remove(qreg_exp);  //00501

1.3 使用示例(是否包含字母)

QRegExp reg("[A-Za-z]");
if(m_sCh.contains(reg))//包含字母
QString截取想要的字符串,你可以使用以下几种方法: 1. 使用`QString::mid()`函数: ```cpp QString str = "Hello, world!"; QString subStr = str.mid(startIndex, length); ``` 这里的`startIndex`表示截取的起始位置,`length`表示需要截取的字符长度。例如,如果你想截取字符串中的"world",可以使用`str.mid(7, 5)`。 2. 使用`QString::left()`或`QString::right()`函数: ```cpp QString str = "Hello, world!"; QString leftSubStr = str.left(length); QString rightSubStr = str.right(length); ``` `left()`函数返回字符串左边指定长度的子串,而`right()`函数返回字符串右边指定长度的子串。例如,如果你想截取字符串中的"Hello",可以使用`str.left(5)`。 3. 使用`QString::section()`函数: ```cpp QString str = "Hello, world!"; QString subStr = str.section(separator, startIndex, endIndex); ``` 这里的`separator`表示分隔符,`startIndex`表示起始位置(从0开始),`endIndex`表示结束位置(不包含在内)。例如,如果你想截取字符串中的"world",可以使用`str.section(',', 1, 1)`。 4. 使用正则表达式配合`QRegularExpressionMatch`进行匹配: ```cpp QString str = "Hello, world!"; QRegularExpression re("world"); QRegularExpressionMatch match = re.match(str); QString subStr = match.captured(); ``` 这种方法适用于更复杂的字符串截取需求,使用正则表达式来匹配并提取子串。上述示例中通过正则表达式`"world"`匹配字符串中的"world"。 根据具体的需求和字符串的格式,选择适合的方法来截取你想要的子串。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值