मेरे पास एक वैध क्लोजर फ़ॉर्म वाला एक स्ट्रिंग है। मैं इसके एक हिस्से को प्रतिस्थापित करना चाहता हूं, बस assoc-in
के साथ, लेकिन पूरे स्ट्रिंग को टोकन के रूप में संसाधित करना चाहता हूं।सिंटेक्स-जागरूक सबस्ट्रिंग प्रतिस्थापन
=> (assoc-in [:a [:b :c]] [1 0] :new)
[:a [:new :c]]
=> (assoc-in [:a
[:b,, :c]] [1 0] :new)
[:a [:new :c]]
=> (string-assoc-in "[:a
[:b,, :c]]" [1 0] ":new")
"[:a
[:new,, :c]]"
मैं string-assoc-in
लिखना चाहता हूं। ध्यान दें कि इसके पहले और अंतिम तर्क तार हैं, और यह लाइन ब्रेक और कॉमा रखता है। क्या यह क्लोजर में किया जा सकता है? मुझे मिली सबसे नज़दीकी चीज़ read
है जो clojure.lang.LispReader
पर कॉल करती है, लेकिन मुझे नहीं पता कि कैसे काम करता है।
मैं इसे क्लोजर स्रोत फ़ाइल पढ़ने के लिए उपयोग करना चाहता हूं और फ़ाइल की संरचना को बनाए रखने के साथ इसे कुछ संशोधनों के साथ प्रदर्शित करना चाहता हूं।
मैं अपने स्वयं के पाठक को लिखने के बिना इस भरोसेमंद तरीके से ऐसा करने के किसी भी तरीके से नहीं सोच सकता। –
* मुझे * –
@ पॉल नाथन के लिए डिफैमक्रो की तरह लगता है: असल में एक लिस्प मैक्रो के पास नियमित कार्य के रूप में एक ही स्ट्रिंग-मैनिपुलेशन ऑपरेशन होता है। पौलुस ग्राहम ने इसे "पूरी भाषा हमेशा वहां" दी। :-) –