इस कोड को आपकी मदद करनी चाहिए। यह वर्तमान स्ट्रिंग की लंबाई की जांच करेगा। यदि यह इस मामले में आपके अधिकतम लम्बाई (150) से अधिक है, तो यह 150 वें चरित्र से शुरू होगा और (पीछे की तरफ जा रहा है) पहले गैर-शब्द वर्ण (जैसा ओपी द्वारा वर्णित है, यह गैर-अंतरिक्ष वर्णों का अनुक्रम है))। इसके बाद स्ट्रिंग को उस वर्ण तक संग्रहीत किया जाएगा और शेष स्ट्रिंग के साथ फिर से शुरू किया जाएगा, जब तक कि हम अधिकतम ऑब्जेक्ट वर्णों से कम न होने वाले सबस्ट्रिंग के साथ समाप्त हो जाएं। अंत में, अंतिम स्ट्रिंग में फिर से उन सभी में शामिल हों।
string line = "This is a really long run-on sentence that should go for longer than 150 characters and will need to be split into two lines, but only at a word boundary.";
int maxLength = 150;
string delimiter = "\r\n";
List<string> lines = new List<string>();
// As long as we still have more than 'maxLength' characters, keep splitting
while (line.Length > maxLength)
{
// Starting at this character and going backwards, if the character
// is not part of a word or number, insert a newline here.
for (int charIndex = (maxLength); charIndex > 0; charIndex--)
{
if (char.IsWhiteSpace(line[charIndex]))
{
// Split the line after this character
// and continue on with the remainder
lines.Add(line.Substring(0, charIndex+1));
line = line.Substring(charIndex+1);
break;
}
}
}
lines.Add(line);
// Join the list back together with delimiter ("\r\n") between each line
string final = string.Join(delimiter , lines);
// Check the results
Console.WriteLine(final);
नोट: आप एक सांत्वना आवेदन में इस कोड को चलाते हैं, तो आप अपेक्षाकृत कम संख्या को "maxlength" बदलने के लिए इतना है कि कंसोल पर लपेट नहीं करता है सकते हैं।
नोट: यह कोड किसी भी टैब वर्ण को प्रभावी नहीं करता है। यदि टैब भी शामिल हैं, तो आपकी स्थिति थोड़ा और जटिल हो जाती है।
अद्यतन: मैंने एक बग तय की जहां नई लाइनें अंतरिक्ष के साथ शुरू हो रही थीं।
स्रोत
2012-06-08 12:31:45
क्यों नियमित अभिव्यक्ति? यदि आप टैग सी # दिखाते हैं, तो इसे सी # फ़ंक्शंस के माध्यम से बनाएं। –
तो क्या आप हर 150 वर्णों में प्रत्येक पंक्ति के लिए लाइनब्रैक डालना चाहते हैं? उदाहरण इनपुट और आउटपुट (एक छोटी सी सीमा के साथ) आप जो करना चाहते हैं उसे कल्पना करने में मदद कर सकते हैं। – Qtax
बमर। शब्द तोड़ने का नियम दर्द है: आप एक शब्द को परिभाषित कैसे करते हैं (संभवतः आपके विचार से कहीं अधिक जटिल)? – Crisfole