2012-08-01 15 views
15

मैं इन यूआरएल तारQString विभाजन

फ़ाइल है: ///home/we/Pictures/neededWord/3193_n.jpg

फ़ाइल: ///home/smes/Pictures/neededWord/jds_22.png

फ़ाइल: ///home/seede/kkske/Pictures/neededWord/3193_n.jpg

मैं उनमें से प्रत्येक से "neededWord" निकालना चाहते हैं। जैसा कि यह उनके द्वारा प्रकट होता है, छवि का नाम हमेशा "आवश्यक वर्ड" के बाद होता है और स्ट्रिंग में बदलती हिस्से "आवश्यक वर्ड" से पहले होती है। जिस तरह से मैंने सोचा था कि "0" सेपरेटर का उपयोग करके से स्ट्रिंग को विभाजित करना है और परिणामस्वरूप QstringList में दूसरा तत्व लेना है। तो सही से कैसे विभाजित करें, या ऐसा करने का एक बेहतर तरीका है?

उत्तर

29

खैर तुम सिर्फ पिछले तत्व से पीछे नहीं ले जाएगा:

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

वैकल्पिक रूप से, आप रेगुलर एक्सप्रेशन का उपयोग कर सकते हैं।

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

मैं इसे इस तरह से तय हो गई QString। Regexp पैटर्न को परिष्कृत और अधिक सुरुचिपूर्ण तरीके से लिखा जा सकता है लेकिन मुझे उन लोगों को लिखने से नफरत है :) भले ही वे बहुत उपयोगी हों!

+1

आपको अंतिम आइटम की खोज करने की आवश्यकता क्यों है? आप जानते हैं कि यह सूचकांक पहले से ही वही है जैसा आप जानते हैं कि पहला आइटम इंडेक्स 0 पर है। यह एक बहुत ही सरल तरीका है जो कि कुछ आसान है। – Chris

0

या मेरे सिर (नहीं परीक्षण किया) के ऊपर से कुछ इस तरह: neededWord में होना चाहिए

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"

+0

वह "आवश्यक वर्ड" के स्थान पर मौजूद पाठ को कैप्चर करने का प्रयास कर रहा है, न कि छवि का वास्तविक नाम। – Chris

+0

ओह, मेरे बुरे तो :) इसे ठीक कर दिया। मुझे और सावधान पढ़ना चाहिए! Thanx। – sadjoker

संबंधित मुद्दे