मेरे पास यह स्ट्रिंग है:
"<span class='break'><div class='name-and-date'><strong>Mr. Talon
Williamson - Dec 18, 1:47 PM Eastern</div></strong><div class='note-
contents'>- wrong</div></span><span class='break'><div class='name-and-
date'><strong>Mr. Talon Williamson - Dec 18, 1:47 PM Eastern</div>
</strong><div class='note-contents'>- Wrong again</div></span><span
class='break'><div class='name-and-date'><strong>Mr. Talon Williamson
- Dec 18, 1:47 PM Eastern</div></strong><div class='note-contents'>-
okay what is the matter with you.</div></span><span class='break'><div
class='name-and-date'><strong>Mr. Talon Williamson - Dec 18, 1:50 PM
Eastern</div></strong><div class='note-contents'>- Bro!</div></span>"
मैं इस स्ट्रिंग से अंतिम अवधि को कैसे हटा सकता हूं ताकि मुझे यह वापसी मूल्य मिल सके:
"<span class='break'><div class='name-and-date'><strong>Mr. Talon
Williamson - Dec 18, 1:47 PM Eastern</div></strong><div class='note-
contents'>- wrong</div></span><span class='break'><div class='name-and-
date'><strong>Mr. Talon Williamson - Dec 18, 1:47 PM Eastern</div>
</strong><div class='note-contents'>- Wrong again</div></span><span
class='break'><div class='name-and-date'><strong>Mr. Talon Williamson
- Dec 18, 1:47 PM Eastern</div></strong><div class='note-contents'>-
okay what is the matter with you.</div></span>"
मैं समझता हूं कि एचटीएमएल पार्सिंग के लिए नोकोगिरी का उपयोग करना बेहतर अभ्यास है लेकिन मेरे उपयोग के मामले में यह महत्वपूर्ण है कि मैं स्ट्रिंग की अखंडता को जगह पर रखूं। जिसका अर्थ है कि यह बिल्कुल वैसा ही होना चाहिए, सिवाय इसके कि अंतिम अवधि को हटा दिया जाए।
मैं ऐसा कुछ करना चाहता हूं:
string.scan(/<span class='break'>/)
लेकिन वह पूरी स्ट्रिंग को नहीं पकड़ता है और उन्हें सरणी तत्वों में तोड़ देता है।
नोट: मैंने पहले भी इसी तरह का सवाल पूछा था और मैं मदद की सराहना करता हूं लेकिन यह वह नहीं था जिसकी मुझे जरूरत थी।
3 जवाब
देखें कि क्या यह मदद करता है। क्या आप यही ढूंढ रहे हैं?
txt = "<span class='break'><div class='name-and-date'><strong>Mr. Talon
Williamson - Dec 18, 1:47 PM Eastern</div></strong><div class='note-
contents'>- wrong</div></span><span class='break'><div class='name-and-
date'><strong>Mr. Talon Williamson - Dec 18, 1:47 PM Eastern</div>
</strong><div class='note-contents'>- Wrong again</div></span><span
class='break'><div class='name-and-date'><strong>Mr. Talon Williamson
- Dec 18, 1:47 PM Eastern</div></strong><div class='note-contents'>-
okay what is the matter with you.</div></span><span class='break'><div
class='name-and-date'><strong>Mr. Talon Williamson - Dec 18, 1:50 PM
Eastern</div></strong><div class='note-contents'>- Bro!</div></span>"
txt.rindex('<span')
# => 540
txt.rindex('</span')
# => 700
txt[txt.rindex('<span'), txt.rindex('</span')]
# => "<span class='break'><div \n class='name-and-date'><strong>Mr. Talon Williamson - Dec 18, 1:50 PM \n Eastern</div></strong><div class='note-contents'>- Bro!</div></span>"
txt[txt.rindex('<span'), txt.rindex('</span')] = ""
txt
# => "<span class='break'><div class='name-and-date'><strong>Mr. Talon \n Williamson - Dec 18, 1:47 PM Eastern</div></strong><div class='note-\n contents'>- wrong</div></span><span class='break'><div class='name-and-\n date'><strong>Mr. Talon Williamson - Dec 18, 1:47 PM Eastern</div>\n </strong><div class='note-contents'>- Wrong again</div></span><span \n class='break'><div class='name-and-date'><strong>Mr. Talon Williamson \n - Dec 18, 1:47 PM Eastern</div></strong><div class='note-contents'>- \n okay what is the matter with you.</div></span>"
आप इसे कई तरह से कर सकते हैं।
मान लीजिए कि आपके पास txt वेरिएबल में वह स्ट्रिंग है तो txt.split("<span class='break'")[0..-2].join("<span class='break")
आसानी से काम करेगा। यह केवल रास्ते की बात है।
निम्नलिखित तब तक काम करेंगे जब तक span
वर्ग "break"
वाले नेस्टेड span
नहीं हो सकते।
input.scan(%r|<span\s+class=['"]break["']>.*?</span>|m)[0...-1].join
थोड़ा धीमा, लेकिन हमेशा इरादा के अनुसार काम करता है:
input[%r|.*(?=<span\s+class=['"]break["']>.*?</span>\z)|m]
बाद वाला समाधान पॉजिटिव लुकहेड का उपयोग करता है ताकि अंतिम पैटर्न के लिए तुरंत सब कुछ सहेजा जा सके। स्ट्रिंग एंड (\z
।)
String#[]
पर अधिक जानकारी के साथ एक तर्क के रूप में एक नियमित अभिव्यक्ति।
संबंधित सवाल
नए सवाल
ruby-on-rails
रूबी ऑन रेल्स रूबी में लिखा गया एक ओपन सोर्स फुल-स्टैक वेब एप्लिकेशन फ्रेमवर्क है। यह लोकप्रिय एमवीसी फ्रेमवर्क मॉडल का अनुसरण करता है और इसे "कॉन्फिगरेशन ओवर कॉन्फिगरेशन" अप्रोच डेवलपमेंट के दृष्टिकोण के लिए जाना जाता है।