मान लीजिए कि मैं कंपनी है कि मैं के लिए काम के लिए एक कस्टम ई-मेल प्रबंधन आवेदन में लिखा है करते हैं। यह कंपनी के समर्थन खाते से ई-मेल पढ़ता है और डेटाबेस में साफ-सुथरा, उनके सादे पाठ संस्करणों को संग्रहीत करता है, अन्य स्वच्छ चीजें करता है जैसे इसे ग्राहक खातों और प्रक्रिया में आदेशों के साथ जोड़ना। जब कोई कर्मचारी किसी संदेश का जवाब देता है, तो मेरा प्रोग्राम एक ई-मेल उत्पन्न करता है जो ग्राहक को चर्चा धागे के स्वरूपित संस्करण के साथ भेजा जाता है। यदि ग्राहक प्रतिक्रिया देता है, तो ऐप आने वाले संदेश को पढ़ने, पिछली चर्चा को बाहर करने और थ्रेड में एक नई वस्तु के रूप में जोड़ने के लिए विषय पंक्ति में एक अद्वितीय संख्या की तलाश करता है। उदाहरण के लिए:हार्ड-लिपटे पाठ को फिर से लपेटने के लिए एल्गोरिदम?
This is a message from Contoso customer service. Recently, you requested customer support. Below is a summary of your request and our reply. -------------------------------------------------------------------- Contoso (Fred) on Tuesday, December 30, 2008 at 9:04 a.m. -------------------------------------------------------------------- John: I've modified your address. You can confirm my work by logging into "Your Account" on our Web site. Your order should ship out today. Thanks for shopping at Contoso. -------------------------------------------------------------------- You on Tuesday, December 30, 2008 at 8:03 a.m. -------------------------------------------------------------------- Oops, I entered my address incorrectly. Can you change it to Fred Smith 123 Main St Anytown, VA 12345 Thanks! -- Fred Smith Contoso Product Lover
आम तौर पर, यह सब अच्छा काम करता है, लेकिन वहाँ एक ऐसा क्षेत्र है कि मैं गया है एक तरह से थोड़ी देर के लिए अब तक की सफाई बंद डाल है, और यह टेक्स्ट रैपिंग से संबंधित है। ऊपर दिए गए जैसे सुंदर ई-मेल प्रारूप को उत्पन्न करने के लिए, मुझे मूल रूप से भेजे गए पाठ को फिर से लपेटने की आवश्यकता है।
मैं एक एल्गोरिथ्म है कि यह करता है लिखा है (हालांकि कोड को देखते हुए, मैं पूरी तरह से यकीन है कि यह कैसे काम करता है अब और नहीं कर रहा हूँ - यह कुछ पुनर्रचना के इस्तेमाल कर सकते हैं)। लेकिन यह एक कठिन रैप न्यू लाइन, न्यू लाइन एक "पैरा के अंत", और एक "अर्थ" न्यू लाइन के बीच भेद नहीं कर सकते हैं। उदाहरण के लिए, एक हार्ड-चादर न्यू लाइन एक है कि ई-मेल क्लाइंट एक पैरा के भीतर डाला पाठ कहते हैं, की एक लंबी लाइन रैप करने के लिए, 79 कॉलम में है। पैराग्राफ न्यूलाइन का अंत वह है जिसे उपयोगकर्ता ने अनुच्छेद में अंतिम वाक्य के बाद जोड़ा था। और एक अर्थपूर्ण न्यूलाइन br
टैग जैसी कुछ होगी, जैसे कि फ्रेड टाइप किया गया पता।
मेरे एल्गोरिथ्म के बजाय केवल दो नई पंक्तियां एक पंक्ति में एक नया पैरा यह दर्शाता है, तो यह ग्राहक के ई-मेल की तरह कुछ प्रारूप तैयार किया जाता होगा के रूप में देखता है:
Oops, I entered my address incorrectly. Can you change it to Fred Smith 123 Main St Anytown, VA 12345 Thanks! -- Fred Smith Contoso Product Lover
जब भी मैं एक संस्करण लिखने की कोशिश कि फिर से लपेट के रूप में इरादा इस पाठ होता है, मैं मूल रूप से है कि में एक दीवार मारा मैं पाठ के शब्दों को जानने की आवश्यकता है, एक "कड़ी मेहनत से रैप" न्यू लाइन और एक "मैं वास्तव में एक br
है जैसे कि यह मतलब" प्रकार के बीच का अंतर नई लाइन, जैसे कि ग्राहक के पते में। (मैं एक नया पैराग्राफ कब शुरू करना है, यह निर्धारित करने के लिए एक पंक्ति में दो न्यूलाइन का उपयोग करता हूं, जो कि अधिकांश लोगों को वास्तव में ई-मेल टाइप करने के तरीके के साथ मेल खाता है।)
किसी के पास एक एल्गोरिदम है जो टेक्स्ट को फिर से लपेट सकता है इरादा? या यह कार्यान्वयन किसी भी दिए गए समाधान की जटिलता का वजन करते समय "पर्याप्त पर्याप्त" है?
धन्यवाद।
इस साधारण विचार के लिए धन्यवाद। एक त्वरित और गंदे नमूना कार्यान्वयन के लिए नीचे मेरा जवाब देखें। –