ارسال سورس کد برنامهها در بلاگر داستان خودش را دارد که
پیشتر در مورد آن بحث شد.
اما اینکار (تبدیل کاراکترهای غیرمجاز به نمونههای مجاز یا به اصطلاح escape آنها) پس از یک مدت تبدیل به دردسر خواهد شد. به همین جهت برنامهی کوچک زیر را برای سادهتر کردن این وضع تهیه کردهام، که از آدرس زیر قابل دریافت است:
دریافت برنامه (برای اجرا نیاز به دات نت فریم ورک 2 دارد)
این برنامهی کمکی، انجام چند کار زیر را در بلاگر برای شما سادهتر خواهد کرد:
الف) escape خودکار کاراکترهای غیرمجاز xml هنگام ارسال سورس کدهای خود و همچنین قرار دادن آنها داخل تگهای div و pre مناسب.
روش برنامه نویسی آن:
public static string EscapeXml(string s)
{
var xml = s;
if (!string.IsNullOrEmpty(xml))
{
// replace literal values with entities
xml = xml.Replace("&", "&");
xml = xml.Replace("<", "<");
xml = xml.Replace(">", ">");
xml = xml.Replace("\"", """);
xml = xml.Replace("'", "'");
}
return xml;
}
ب) حذف خطوط بین تگهای html . این مورد هنگام ارسال یک table استاندارد html در بلاگر لازم است. برای مثال در بلاگر ارسال کد زیر
<table>
<tr>
<td>data
</td>
</tr>
سبب ایجاد فواصل عجیبی در حین نمایش ردیفهای جدول در سایت خواهد شد، زیرا بلاگر به ازای هر خط جدید یک br را به صورت خودکار نمایش خواهد داد. برای رفع این مشکل از دکمه remove html new lines استفاده کنید. به این صورت اطلاعات فوق به صورت خودکار به شکل زیر تبدیل میشوند:
<table> <tr> <td>data</td> </tr>
روش برنامه نویسی آن :
private static readonly Regex REGEX_BETWEEN_TAGS = new Regex(@">\s+<", RegexOptions.Compiled);
private static readonly Regex REGEX_LINE_BREAKS = new Regex(@"\n\s+", RegexOptions.Compiled);
public static string RemoveSpaces(string html)
{
html = REGEX_BETWEEN_TAGS.Replace(html, "> <");
return REGEX_LINE_BREAKS.Replace(html, string.Empty);
}
ج) حذف کاراکتر 0xA0 . البته این مورد ارتباطی به بلاگر پیدا نمیکند ولی اگر با CPP کار کرده باشید، حتما به مورد کپی سورس از اینترنت به داخل ادیتور و عدم کامپایل آن، برخوردهاید. در سورس کدهای CPP مجاز به استفاده از کاراکتر No-Break Space نیستید (0xA0) و باید حذف شود. حال فرض کنید با بیش از 200 سطر سر و کار دارید. بنابراین نیاز به یک تمیز کننده سریع وجود خواهد داشت. (این مورد در ادیتور برنامه management studio اس کیوال سرور هم صادق است)
txtMod.Text = txtOrig.Text.Replace((char)160, ' ');
ساده است ولی انجام دستی آن مشکل خواهد بود.