2012-08-01 65 views
15

我有這些URL字符串QString的分割

文件:///home/we/Pictures/neededWord/3193_n.jpg

文件:///home/smes/Pictures/neededWord/jds_22.png

文件:///home/seede/kkske/Pictures/neededWord/3193_n.jpg

我想從他們每個人抽取 「neededWord」。從它們看來,圖像的名稱總是位於「neededWord」之後,並且字符串中的變化部分位於「neededWord」之前。我想到的方法是使用從右邊的的「/」分隔符分割字符串,並取得結果QstringList中的第二個元素。那麼如何從正確的角度分裂,還是有更好的方法來做到這一點?

回答

29

那麼你就只取倒數第二個元素:

QStringList pieces = url.split("/"); 
QString neededWord = pieces.value(pieces.length() - 2); 

或者,你可以使用正則表達式。

0

我固定它是這樣的:

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

爲什麼你需要搜索最後一個項目?你知道它的索引與你知道第一項索引爲0的方式是一樣的。這是一種非常奇怪的方式,可以讓你瞭解如此簡單的事情。 – Chris 2012-08-01 14:12:03

0

或者像這樣從我的頭(未測試)的頂部:

QString neededWord = ""; 
QString str = "file:///home/seede/kkske/Pictures/neededWord/3193_n.jpg"; 
QRegExp rx(".*Pictures\\/(\\w+)\\/.*(?:jpg|png|gif|bmp|tiff)"); 
rx.setMinimal(false); 
rx.setCaseSensitivity(Qt::CaseSensitive) // or use Qt::CaseInsensitive 
if (rx.indexIn(str) != -1) { 
    neededWord = rx.cap(1); 
} 

「neededWord」 應該是在neededWord QString的。正則表達式模式可以用更優雅的方式進行優化和書寫,但我討厭寫這些:)即使它們超級有用!

+0

他試圖捕獲「neededWord」位置的文本,而不是圖像的實際名稱。 – Chris 2012-08-03 15:20:58

+0

哎呀,我的壞話:)修復它。我應該更仔細閱讀!感謝名單。 – sadjoker 2012-08-04 18:24:01