var str="INFO] :谷���新道, ひば���ヶ丘2丁���, ひばりヶ���, 東久留米市 (Higashikurume)";
এবং স্ট্রিং থেকে আমার সমস্ত অ-এসকি অক্ষর মুছে ফেলতে হবে,
মানে স্ট্রে শুধুমাত্র "INFO] (হিগাশিকুরুম)" থাকে;
উত্তর:
এএসসিআইআই 0 থেকে 127 এর মধ্যে রয়েছে, সুতরাং:
str.replace(/[^\x00-\x7F]/g, "");
এটি অপসারণের ইতিবাচক দৃ with়তার সাথেও করা যেতে পারে:
textContent = textContent.replace(/[\u{0080}-\u{FFFF}]/gu,"");
এটি ইউনিকোড ব্যবহার করে। জাভাস্ক্রিপ্টে, নিয়মিত অভিব্যক্তির জন্য ইউনিকোড প্রকাশ করার সময়, অক্ষরগুলি পালানোর অনুক্রমের সাথে নির্দিষ্ট করা হয় \u{xxxx}
তবে পতাকাটি 'u'
অবশ্যই উপস্থিত থাকে; মনে রাখবেন রেগেক্সের পতাকা রয়েছে 'gu'
।
আমি এটিকে "অপসারণের ইতিবাচক দৃ "়তা" বলেছিলাম যে "ধনাত্মক" দৃser়তাটি কোন অক্ষরগুলি অপসারণ করার কথা প্রকাশ করে, যখন একটি "নেতিবাচক" উক্তিটি বর্ণগুলি সরায় না তা প্রকাশ করে। অনেক প্রসঙ্গে, পূর্বের উত্তরগুলিতে বর্ণিত নেতিবাচক দৃ .়তা পাঠকের পক্ষে আরও পরামর্শদায়ক হতে পারে। পরিধিটি " ^
" "" নয় "বলে এবং পরিসীমাটি \x00-\x7F
" ascii "বলে, সুতরাং দুজনে মিলে" ascii নয় "বলে say
textContent = textContent.replace(/[^\x00-\x7F]/g,"");
এটি কেবল ইংরেজী ভাষা সম্পর্কে যত্নশীল ইংরাজী ভাষাভাষীদের জন্য একটি দুর্দান্ত সমাধান এবং এটি মূল প্রশ্নের উত্তম উত্তর answer তবে আরও সাধারণ প্রেক্ষাপটে, "সব অ-অস্কিই খারাপ" বলে ধরে নেওয়ার সাংস্কৃতিক পক্ষপাতটি সর্বদা গ্রহণ করা যায় না। প্রাসঙ্গিক ক্ষেত্রে যেখানে অ-এস্কিই ব্যবহৃত হয় তবে মাঝে মাঝে তা ছড়িয়ে দেওয়া দরকার, ইউনিকোডের ইতিবাচক দৃ as়তা আরও ভাল।
একটি ভাল ইঙ্গিত যে শূন্য-প্রস্থ, অ মুদ্রণ অক্ষরগুলি একটি স্ট্রিংয়ে এমবেড করা হয় যখন স্ট্রিংয়ের "দৈর্ঘ্য" বৈশিষ্ট্যটি ধনাত্মক (ননজারো) হয় তবে খালি স্ট্রিংয়ের (যেমন প্রিন্ট করা হয়) মনে হয়। উদাহরণস্বরূপ, "টেক্সট কনটেন্ট" নামে একটি ভেরিয়েবলের জন্য আমি ক্রোম ডিবাগারে এটি দেখিয়েছি:
> textContent
""
> textContent.length
7
এটি আমাকে সেই স্ট্রিংয়ে কী আছে তা দেখতে চাইলে প্ররোচিত করেছিল।
> encodeURI(textContent)
"%E2%80%8B%E2%80%8B%E2%80%8B%E2%80%8B%E2%80%8B%E2%80%8B%E2%80%8B"
বাইটের এই অনুক্রমটি ইউনিকোডের কয়েকটি অক্ষরের পরিবারে মনে হয় যা ওয়ার্ড প্রসেসর দ্বারা নথিতে সন্নিবেশিত হয়, এবং তারপরে ডেটা ক্ষেত্রগুলিতে তাদের পথ সন্ধান করে। সর্বাধিক সাধারণত, এই চিহ্নগুলি একটি নথির শেষে ঘটে occur শূন্য-প্রস্থের স্থানটি "%E2%80%8B"
সিকে-সম্পাদক (সিকেইডিটার) দ্বারা .োকানো হতে পারে।
encodeURI() UTF-8 Unicode html Meaning
----------- -------- ------- ------- -------------------
"%E2%80%8B" EC 80 8B U 200B ​ zero-width-space
"%E2%80%8E" EC 80 8E U 200E ‎ left-to-right-mark
"%E2%80%8F" EC 80 8F U 200F ‏ right-to-left-mark
সে সম্পর্কে কিছু উল্লেখ:
http://www.fileformat.info/info/unicode/char/200B/index.htm
https://en.wikedia.org/wiki/Left-to-right_mark
মনে রাখবেন যে এমবেড করা অক্ষরের এনকোডিংটি ইউটিএফ -8 হলেও, নিয়মিত এক্সপ্রেশনটিতে এনকোডিং হয় না। যদিও চরিত্রটি ইউটিএফ -8 এর তিনটি বাইট (আমার ক্ষেত্রে) হিসাবে স্ট্রিংটিতে এম্বেড করা হয়েছে, নিয়মিত অভিব্যক্তির নির্দেশাবলী অবশ্যই দ্বি-বাইট ইউনিকোড ব্যবহার করবে। আসলে, ইউটিএফ -8 চার বাইট পর্যন্ত দীর্ঘ হতে পারে; এটি ইউনিকোডের তুলনায় কম কমপ্যাক্ট কারণ এটি স্ট্যান্ডার্ড এসকিআই এনকোডিং থেকে বাঁচতে হাই বিট (বা বিট) ব্যবহার করে। এটি এখানে ব্যাখ্যা করা হয়েছে:
textContent = textContent.replace(/[\u{0080}-\u{FFFF}]/gu,"");
আইই (কমপক্ষে IE 11) এ কাজ করে না। এটি ত্রুটির সাথে ব্যর্থ হয়: স্ক্রিপ্ট 5021 : চরিত্রের সেটটিতে অবৈধ পরিসীমা
আপনি নন-এএসসিআইআই অক্ষরগুলি প্রতিস্থাপন করতে নীচের রেজেক্স ব্যবহার করতে পারেন
str = str.replace(/[^A-Za-z 0-9 \.,\?""!@#\$%\^&\*\(\)-_=\+;:<>\/\\\|\}\{\[\]`~]*/g, '')
তবে মনে রাখবেন যে স্পেস, কলোন এবং কমাগুলি সমস্ত বৈধ ASCII, সুতরাং ফলাফল হবে
> str
"INFO] :, , , (Higashikurume)"
[]
অর্থ কোনও চরিত্রের অর্থ কিন্তু [^]
এর বিপরীতে - কোনও অক্ষরটি ব্র্যাকেটে নয়।
এইগুলির কোনও উত্তর সঠিকভাবে ট্যাবগুলি, নিউলাইনগুলি, ক্যারেজ রিটার্নগুলি হ্যান্ডেল করে না এবং কিছু বর্ধিত ASCII এবং ইউনিকোড পরিচালনা করে না। এটি ট্যাব এবং নিউলাইনগুলি কেপ করবে, তবে নিয়ন্ত্রণের অক্ষর এবং এএসসিআইআই সেট থেকে বাইরে থাকা কোনও কিছুই সরিয়ে ফেলবে। পরীক্ষা করতে "এই কোড স্নিপেট চালান" বোতামটি ক্লিক করুন। পাইপে নীচে নেমে আসা কিছু নতুন জাভাস্ক্রিপ্ট রয়েছে তাই ভবিষ্যতে (2020+?) আপনাকে করতে হতে পারে \u{FFFFF}
তবে এখনও হয়নি
console.log("line 1\nline2 \n\ttabbed\nF̸̡̢͓̳̜̪̟̳̠̻̖͐̂̍̅̔̂͋͂͐l̸̢̹̣̤̙͚̱͓̖̹̻̣͇͗͂̃̈͝a̸̢̡̬͕͕̰̖͍̮̪̬̍̏̎̕͘ͅv̸̢̛̠̟̄̿i̵̮͌̑ǫ̶̖͓͎̝͈̰̹̫͚͓̠̜̓̈́̇̆̑͜ͅ".replace(/[\x00-\x08\x0E-\x1F\x7F-\uFFFF]/g, ''))
উচ্চারণ সহ এএসসিআইআই ব্যবহার করতে:
var str = str.replace(/[^\x00-\xFF]/g, "");