hakan648
سه شنبه 30 آبان 1391, 00:32 صبح
سلام
دنبال یک روش برای پاکسازی متن برای استفاده در Url هستم. ( و نه Decode کردن! )
برای مثال سایتهای DotNetTips.info , StackOverFlow.com بخوبی از این سیستم استفاده می کنند.
در این سایت ها حروفی غیر از حروف اصلی حذف می شوند و بجای آنها "-" قرار می گیرد. ( البته با یک سری شرط و شروط دیگر که خارج از بحث هستند)
حالا یک نمونه خوب (http://stackoverflow.com/a/25486/1146395)از خود StackOverFlow پیدا کردم اما با حروف Unicode مشکل داره.
بعد از تست کردن کد فوق ، تصمیم گرفتم یک Regular Expression بنویسم که فقط حروف فارسی ، انگلیسی و عدد قبول کند:
[^a-zA-Z0-9\u0600-\u06FF]+
اما حروف عربی و علامت هم قبول می کند.
نتیجه ی replace کردن رشته ی "تبدیل صفحات یک فایل PDF به تصویر، با استفاده از Acrobat SDK" با Regular Expression فوق ، مقدار "تبدیل-صفحات-یک-فایل-PDF-به-تصویر،-با-استفاده-از-Acrobat-SDK" می باشد.
که حرف "،" هم باید جایگزین شود که نشده است.
راهی که میدونم اینه که در این Range ، مقدایر عربی و علامت رو حذف کنم اما دقیقا نمیدونم چه حروف و علامت هایی رو باید حذف کنم.
اگر به این جدول (http://www.ssec.wisc.edu/~tomw/java/unicode.html) هم توجه کنید ، میبینید که تعداد این حروف بسیار زیاد بوده و امکان تمایز بین حروف و خارج کردن آنها از بازه ی فوق ، براحتی امکان پذیر نیست.
پست های جناب موسوی رو هم در این تاپیک ها ( -1- (http://barnamenevis.org/showthread.php?292675) ، -2- (http://barnamenevis.org/showthread.php?292675) ) مطالعه کردم ولی خروجی همچنان مشابه فوق است.
در نهایت فکر می کنم که مسئله ( Clean کردن متن و استفاده در Url ) رو باید با Regex حل کنم ، اما بیشتر خرسند میشم اگه راه حل های مختلف ( و البته کارا ! ) رو هم از شما دوستان یاد بگیرم.
( برای تست راه حل ها هم میتونید عبارت هایی که شامل علامت، حروف عربی، ... هستند در این صفحه (http://www.dotnettips.info/View/Mosaic)رو با راه حلتون تست کنید و با نتیجه ی Clean شده مقایسه کنید )
با تشکر از همه ی دوستان عزیز!
دنبال یک روش برای پاکسازی متن برای استفاده در Url هستم. ( و نه Decode کردن! )
برای مثال سایتهای DotNetTips.info , StackOverFlow.com بخوبی از این سیستم استفاده می کنند.
در این سایت ها حروفی غیر از حروف اصلی حذف می شوند و بجای آنها "-" قرار می گیرد. ( البته با یک سری شرط و شروط دیگر که خارج از بحث هستند)
حالا یک نمونه خوب (http://stackoverflow.com/a/25486/1146395)از خود StackOverFlow پیدا کردم اما با حروف Unicode مشکل داره.
بعد از تست کردن کد فوق ، تصمیم گرفتم یک Regular Expression بنویسم که فقط حروف فارسی ، انگلیسی و عدد قبول کند:
[^a-zA-Z0-9\u0600-\u06FF]+
اما حروف عربی و علامت هم قبول می کند.
نتیجه ی replace کردن رشته ی "تبدیل صفحات یک فایل PDF به تصویر، با استفاده از Acrobat SDK" با Regular Expression فوق ، مقدار "تبدیل-صفحات-یک-فایل-PDF-به-تصویر،-با-استفاده-از-Acrobat-SDK" می باشد.
که حرف "،" هم باید جایگزین شود که نشده است.
راهی که میدونم اینه که در این Range ، مقدایر عربی و علامت رو حذف کنم اما دقیقا نمیدونم چه حروف و علامت هایی رو باید حذف کنم.
اگر به این جدول (http://www.ssec.wisc.edu/~tomw/java/unicode.html) هم توجه کنید ، میبینید که تعداد این حروف بسیار زیاد بوده و امکان تمایز بین حروف و خارج کردن آنها از بازه ی فوق ، براحتی امکان پذیر نیست.
پست های جناب موسوی رو هم در این تاپیک ها ( -1- (http://barnamenevis.org/showthread.php?292675) ، -2- (http://barnamenevis.org/showthread.php?292675) ) مطالعه کردم ولی خروجی همچنان مشابه فوق است.
در نهایت فکر می کنم که مسئله ( Clean کردن متن و استفاده در Url ) رو باید با Regex حل کنم ، اما بیشتر خرسند میشم اگه راه حل های مختلف ( و البته کارا ! ) رو هم از شما دوستان یاد بگیرم.
( برای تست راه حل ها هم میتونید عبارت هایی که شامل علامت، حروف عربی، ... هستند در این صفحه (http://www.dotnettips.info/View/Mosaic)رو با راه حلتون تست کنید و با نتیجه ی Clean شده مقایسه کنید )
با تشکر از همه ی دوستان عزیز!