كيفية إزالة BBCode من سلسلة في .NET
سؤال
أحاول إزالة جميع علامات BBCode من سلسلة.
[url]www.google.com[/url]
يصبح
www.google.com
لديّ regex يعمل في PHP للعثور عليهم جميعًا ، فقط لا أعرف كيفية إزالتها في .NET
Regex للعثور على BBCode
|[[\/\!]*?[^\[\]]*?]|si
المحلول
يبدو تعبيرك المعتاد أنه لن يعمل ، لذا جربت تعبيرًا مختلفًا:
string s = "[url]www.google.com[/url] [url=www.google.com]www.google.com[/url]";
s = Regex.Replace(s, @"\[[^]]+\]", "");
نتيجة:
www.google.com www.google.com
أيضًا ، ستحتاج إلى هذا البيان في الجزء العلوي من ملفك لجعل هذا العمل:
using System.Text.RegularExpressions;
نصائح أخرى
أنا تستخدم Codekicker.bbcode مكتبة (هذه أو الذي - التي) ثم سيقوم هذا الرمز بتجريد علامات BBCode المعروفة:
parser.ParseSyntaxTree(@"[url]www.google.com[/url] [url=www.google.com]www.google.com[/url]").ToText()
سيؤدي هذا إلى تجريد علامات رمز BB المعروفة فقط وتحتاج إلى الإنشاء أولاً BBCodeParser
مثيل مع معلومات حول العلامات المستخدمة. المحلل الافتراضي الذي تستخدمه المكتبة هو:
var parser = new BBCodeParser(ErrorMode.ErrorFree, null, new[]
{
new BBTag("b", "<b>", "</b>"),
new BBTag("i", "<span style=\"font-style:italic;\">", "</span>"),
new BBTag("u", "<span style=\"text-decoration:underline;\">", "</span>"),
new BBTag("code", "<pre class=\"prettyprint\">", "</pre>"),
new BBTag("img", "<img src=\"${content}\" />", "", false, true),
new BBTag("quote", "<blockquote>", "</blockquote>"),
new BBTag("list", "<ul>", "</ul>"),
new BBTag("*", "<li>", "</li>", true, false),
new BBTag("url", "<a href=\"${href}\">", "</a>", new BBAttribute("href", ""), new BBAttribute("href", "href")),
});
(تحتاج إلى إنشائها بنفسك ، Codekicker.bbcode لا يعرض هذا الكائن)
لا تنتمي إلى StackOverflow