regex - Powershell Find String Between Characters and Replace -


Powershell स्क्रिप्ट में, हैशटेबल में व्यक्तिगत जानकारी है I

इस हैशटेबल का उपयोग करना

  {प्रथम = "जेम्स", अंतिम = "ब्राउन", फोन = "12345" ...}   

, मैं टेम्प्लेट टेक्स्ट फ़ाइल में स्ट्रिंग्स को बदलना चाहता हूं। प्रत्येक स्ट्रिंग के लिए @key @ स्वरूप, मैं इस स्ट्रिंग को मान से बदलना चाहता हूं जो कि हैशटेबल में कुंजी के अनुरूप होता है यहां एक नमूना इनपुट और आउटपुट है:

input.txt

  मेरा पहला नाम @ पहले @ और अंतिम नाम @ अंतिम @ है मुझे @ फोन @ पर कॉल करें> आउटपुट.txt  
  मेरा पहला नाम जेम्स है और अंतिम नाम ब्राउन है I मुझे 12345 पर कॉल करें   

क्या आप मुझे सलाह दे सकते हैं "@" के बीच की "कुंजी" स्ट्रिंग कैसे लौटाए, ताकि मैं स्ट्रिंग प्रतिस्थापन फ़ंक्शन के लिए उनका मान पा सकूं? इस समस्या के लिए कोई अन्य विचार का स्वागत किया है

आप यह शुद्ध regex के साथ कर सकते हैं, लेकिन पठनीयता के लिए, मैं इसे जितना अधिक करना चाहता हूं regex से कोड:

  $ tmpl = 'मेरा पहला नाम @ पहले @ है और अंतिम नाम @ अंतिम @ है $ @ = $ $ = $ {@ $ First = "James" last = "brown" phone = "12345"} $ new = $ tmpl foreach ($ h में $ कुंजी। Keys) {$ escKey = [Regex] :: एस्केप ($ कुंजी) $ नया = $ नया- "$ एएसकेके @ @", $ एच [$ की]} $ नया   <एच 2> स्पष्टीकरण  

< कोड> $ tmpl में टेम्प्लेट स्ट्रिंग है।

$ h हैशटेबल है।

$ new

  1. हम हैश में प्रत्येक कुंजी के माध्यम से बताते हैं।
  2. हम एक कोड के regex escaped संस्करण को $ escKey
  3. हम $ escKey को किसी विशेष कुंजी के लिए हैशटेबल लुकअप वाले @ वर्णों की जगह लेते हैं। < P> ऐसा करने के बारे में अच्छी चीजों में से एक यह है कि आप अपने हैशटेबल और अपने टेम्पलेट को बदल सकते हैं, और कभी भी regex अपडेट नहीं कर सकते हैं। यह उन मामलों को भी शानदार ढंग से संभालता है जहां एक टेम्पलेट (और इसके विपरीत) में एक कुंजी का कोई भी अनुकूलन योग्य अनुभाग नहीं है।

Comments

Popular posts from this blog

php - PDO bindParam() fatal error -

logging - How can I log both the Request.InputStream and Response.OutputStream traffic in my ASP.NET MVC3 Application for specific Actions? -

java - Why my included JSP file won't get processed correctly? -