我有这些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中接受第二个元素。那么,如何从右边分离,还是有更好的方法来做到这一点呢?
发布于 2012-08-01 03:37:26
那么,您只需使用第二个元素到最后一个元素:
QStringList pieces = url.split( "/" );
QString neededWord = pieces.value( pieces.length() - 2 );或者,您可以使用正则表达式。
发布于 2012-08-01 05:13:21
我把它修好了:
splitted.at(splitted.findIndex(splitted.last()) = info.url().prettyUrl().split("/");*header =info.url-1;
发布于 2018-05-30 14:20:35
我将使用QString::lastIndexOf()和QString::mid()来防止不必要的QString / QStringList创建和破坏:
// 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进一步优化这一点。
QStringRef neededWordRef(&url, prevSlash, lastSlash - prevSlash - 1);https://stackoverflow.com/questions/11751697
复制相似问题