سؤال

كيف تكتب تعبيرًا عاديًا لتحويل العلامة إلى HTML؟على سبيل المثال، ستكتب ما يلي:

This would be *italicized* text and this would be **bold** text

سيتعين بعد ذلك تحويل هذا إلى:

This would be <em>italicized</em> text and this would be <strong>bold</strong> text

يشبه إلى حد كبير عنصر التحكم في التحرير الذي يستخدمه Stackoverflow.

إيضاح

لما يستحق الأمر، أنا أستخدم C#.أيضاً، هذه هي فقط العلامات الحقيقية/تخفيض السعر الذي أريد السماح به.سيكون مقدار النص الذي يتم تحويله أقل من 300 حرف أو نحو ذلك.

هل كانت مفيدة؟

المحلول

أفضل طريقة هي العثور على نسخة من مكتبة Markdown منقولة إلى أي لغة تستخدمها (لم تحددها في سؤالك).


الآن بعد أن أوضحت أنك تريد فقط معالجة STRONG وEM، وأنك تستخدم C#، أنصحك بإلقاء نظرة على تخفيض السعر.NET لمعرفة كيفية تنفيذ هذه العلامات.كما ترون، فهو في الواقع تعبيران.هنا هو الرمز:

private string DoItalicsAndBold (string text)
{
    // <strong> must go first:
    text = Regex.Replace (text, @"(\*\*|__) (?=\S) (.+?[*_]*) (?<=\S) \1", 
                          new MatchEvaluator (BoldEvaluator),
                          RegexOptions.IgnorePatternWhitespace | RegexOptions.Singleline);

    // Then <em>:
    text = Regex.Replace (text, @"(\*|_) (?=\S) (.+?) (?<=\S) \1",
                          new MatchEvaluator (ItalicsEvaluator),
                          RegexOptions.IgnorePatternWhitespace | RegexOptions.Singleline);
    return text;
}

private string ItalicsEvaluator (Match match)
{
    return string.Format ("<em>{0}</em>", match.Groups[2].Value);
}

private string BoldEvaluator (Match match)
{
    return string.Format ("<strong>{0}</strong>", match.Groups[2].Value);
}

نصائح أخرى

تعبير عادي واحد لن يفعل.سيكون لكل ترميز نصي مترجم HTML خاص به.انظر بشكل أفضل إلى كيفية تنفيذ المحولات الحالية للحصول على فكرة عن كيفية عملها.

http://en.wikipedia.org/wiki/Markdown#See_also

لا أعرف شيئًا عن C# على وجه التحديد، ولكن في لغة Perl سيكون:
س/
\*\*(.*?)\*\*/
\< بولد>$1\</bold>/ز
س/
\*(.*?)\*/
\< em>$1\</em>/g

جئت عبر ما يلي بريد الذي يوصي بعدم القيام بذلك.في حالتي، على الرغم من أنني أتطلع إلى إبقاء الأمر بسيطًا، لكنني أعتقد أنني سأقوم بنشر هذا لكل وظيفة توصية في حالة رغبة شخص آخر في القيام بذلك.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top