首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >QString分裂

QString分裂
EN

Stack Overflow用户
提问于 2012-08-01 02:11:57
回答 4查看 73.8K关注 0票数 23

我有这些url字符串

file:///home/we/Pictures/neededWord/3193_n.jpg

file:///home/smes/Pictures/neededWord/jds_22.png

file:///home/seede/kkske/Pictures/neededWord/3193_n.jpg

我想从每个人中提取"neededWord“。从它们中可以看出,图像的名称总是在"neededWord“之后,而字符串中的更改部分在"neededWord”之前。我想到的方式是使用"/“分隔符从右拆分字符串,并在得到的QstringList中接受第二个元素。那么,如何从右边分离,还是有更好的方法来做到这一点呢?

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2012-08-01 03:37:26

那么,您只需使用第二个元素到最后一个元素:

代码语言:javascript
复制
QStringList pieces = url.split( "/" );
QString neededWord = pieces.value( pieces.length() - 2 );

或者,您可以使用正则表达式。

票数 45
EN

Stack Overflow用户

发布于 2012-08-01 05:13:21

我把它修好了:

splitted.at(splitted.findIndex(splitted.last()) = info.url().prettyUrl().split("/");*header =info.url-1;

票数 1
EN

Stack Overflow用户

发布于 2018-05-30 14:20:35

我将使用QString::lastIndexOf()QString::mid()来防止不必要的QString / QStringList创建和破坏:

代码语言:javascript
复制
// Example:
//  0         1         2         3         4         5
//  012345678901234567890123456789012345678901234567890
// "file:///home/we/Pictures/neededWord/3193_n.jpg"

QString neededWord;
int const lastSlash = url.lastIndexOf('/'); // := 35
int const prevSlash = url.lastIndexOf('/', -lastSlash - 1); // := 24
if(lastSlash > prevSlash + 1 && prevSlash >= 0) {
    neededWord = url.mid(prevSlash, lastSlash - prevSlash - 1); // len := 10
}

根据您的需要,您可以使用QStringRef进一步优化这一点。

代码语言:javascript
复制
QStringRef neededWordRef(&url, prevSlash, lastSlash - prevSlash - 1);
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11751697

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档