জাভাস্ক্রিপ্ট ব্যবহার করে স্ট্রিং থেকে স্থান ব্যতীত সমস্ত বিশেষ অক্ষর সরিয়ে ফেলুন


157

আমি জাভাস্ক্রিপ্ট ব্যবহার করে স্ট্রিং থেকে স্থান ব্যতীত সমস্ত বিশেষ অক্ষর মুছে ফেলতে চাই।

উদাহরণস্বরূপ, abc's test#s হিসাবে আউটপুট করা উচিত abcs tests


3
আপনি কীভাবে বিশেষ চরিত্রটি সংজ্ঞায়িত করেন?
কিথ ইরউইন

উত্তর:


348

আপনার একটি স্ট্রিং রিপ্লেক্স ফাংশনটি ব্যবহার করা উচিত, একটি একক রেজেক্স সহ। বিশেষ অক্ষর দ্বারা ধরে নেওয়া, আপনি এমন কোনও কিছু বোঝাতে চাইছেন যা চিঠি নয়, এখানে একটি সমাধান রয়েছে:

const str = "abc's test#s";
console.log(str.replace(/[^a-zA-Z ]/g, ""));


5
অ লাতিন বর্ণমালা উপর এই সমাধান ব্যবহার করার জন্য চেক করুন এই উত্তর জানতে
efkan

এটি সংখ্যার অক্ষরও মুছে ফেলবে!
টেক_জেক

15
@ টেক_জেক আপনি যা করতে পারেনstr.replace(/[^a-zA-Z0-9]/g, "")
উইলিয়ামস

2
আসলে আপনার এই str.replace(/[^a-zA-Z0-9 ]/g, "");নোটিশটি 0-9 এবং] এর মধ্যে স্থান দরকার
আম্মার শাহ Shah

এটির জন্য কিছুটা ঝাঁকুনির দরকার, এটি / বা - অক্ষর এবং উটকেস এর প্রথম চরিত্রটি ছোট ক্ষেত্রে দেখা যায় না, তবে এটি বড় হাতের অক্ষরে।
সানসুন

132

আপনি মুছে ফেলতে চান এমন অক্ষরগুলি নির্দিষ্ট করে এটি করতে পারেন:

string = string.replace(/[&\/\\#,+()$~%.'":*?<>{}]/g, '');

বিকল্প হিসাবে, সংখ্যা এবং বর্ণ বাদে সমস্ত অক্ষর পরিবর্তন করতে, চেষ্টা করুন:

string = string.replace(/[^a-zA-Z0-9]/g, '');

4
আমি যদি এটি ব্যবহার করে স্থানটি সরিয়ে নিতে চাই না তবে কী হবে? /[^a-zA-Z0-9]/g
aadi1295

8
@ আরবাজআবিডকে জায়গা রাখার জন্য কেবল এটিকে সাদা তালিকাভুক্ত অক্ষরগুলিতে যুক্ত করুন। আপনার রিজেক্সটি "/ [^ a-zA-Z0-9] / g" হবে (9 পরে সাদা
বর্ণনাস্থল

1
এটি একটি উত্তর প্রয়োজন ছিল, একটি স্থান প্রয়োজন হলে।
নাথান

এটি প্রতিস্থাপন করে ()এবং whitespacesস্ট্রিংয়ে.text().replace(/[ ()]/g, '')
সি অ্যালোনসো সি অর্টেগা

30

প্রথম সমাধানটি কোনও ইউটিএফ -8 বর্ণমালার জন্য কাজ করে না। (এটি Привіт এর মতো পাঠ্য কেটে দেবে)। আমি এমন একটি ফাংশন তৈরি করতে পরিচালিত করেছি যা RegExp ব্যবহার করে না এবং জাভাস্ক্রিপ্ট ইঞ্জিনে ভাল ইউটিএফ -8 সমর্থন ব্যবহার করে। ধারণাটি সহজ যদি একটি চিহ্ন বড় হাতের এবং ছোট হাতের ক্ষেত্রে এটি একটি বিশেষ চরিত্রের সমান হয়। একমাত্র ব্যতিক্রম সাদা স্থানের জন্য তৈরি।

function removeSpecials(str) {
    var lower = str.toLowerCase();
    var upper = str.toUpperCase();

    var res = "";
    for(var i=0; i<lower.length; ++i) {
        if(lower[i] != upper[i] || lower[i].trim() === '')
            res += str[i];
    }
    return res;
}

আপডেট: দয়া করে নোট করুন, এই সমাধানটি কেবলমাত্র সেই ভাষাগুলির জন্যই কাজ করে যেখানে ছোট এবং বড় অক্ষর রয়েছে। চাইনিজের মতো ভাষায়, এটি কার্যকর হবে না।

আপডেট 2: আমি যখন অস্পষ্ট অনুসন্ধানে কাজ করছিলাম তখন আমি আসল সমাধানে এসেছি। আপনি যদি অনুসন্ধানের কার্যকারিতা বাস্তবায়নের জন্য বিশেষ অক্ষরগুলি সরিয়ে দেওয়ার চেষ্টা করেন তবে আরও ভাল পদ্ধতির উপায় থাকতে পারে। ব্যবহারের লিপ্যন্তর গ্রন্থাগার যা আপনি শুধুমাত্র ল্যাটিন অক্ষর থেকে STRING উত্পাদন করা হবে এবং তারপর সহজ RegExp বিশেষ অক্ষর মুছে ফেলার সব জাদু করতে হবে। (এটি চিনাদের পক্ষেও কাজ করবে এবং আপনি Tromsø== তৈরি করেও পার্শ্ব সুবিধা পাবেন Tromso)।


এই বেশ সৃজনশীল সমাধানের জন্য আপনাকে ধন্যবাদ। ভাষা আসলে কীভাবে কাজ করে তার সাথে এটি অনেকটা সামঞ্জস্যপূর্ণ, যেহেতু আমাদের মধ্যে অনেকে "Привіт" বা "æøå" বিশেষ অক্ষর বিবেচনা করে না। বেশিরভাগ সমাধানে এমন কোনও অক্ষর কেটে যায় যা ইংরেজি বর্ণমালার অংশ নয়।
অ্যালেক্স ল্যাংবার্গ 17'15

1
আমার জন্য প্রায় সঠিক উত্তর, তবে দুর্ভাগ্যক্রমে এটি চীনা চরিত্রগুলিকে বিশেষ অক্ষর হিসাবে বিবেচনা করে।
এরিক মাঝেরুস

@ এরিকমাজেরুস এবং হিন্দিও
প্রোগ্রামার

সাবধানতা অবলম্বন করুন, এটি সংখ্যাগুলি বিশেষ অক্ষর হিসাবে বিবেচনা করে।
just_user

11

আমি জাভাস্ক্রিপ্ট জানি না, তবে কি রেজেক্স ব্যবহার করা সম্ভব নয়?

এর মতো [^\w\d\s]কিছু অঙ্ক, অক্ষর এবং শ্বেতস্পেস ছাড়া কিছু মিলবে। জাভাস্ক্রিপ্টে সিনট্যাক্স সন্ধান করা কেবল একটি প্রশ্ন হবে।


1
stackoverflow.com/a/4374890/2384606 এটি আপনার প্রশ্নের উত্তর :)
Carmela

8

আমি সিগুলের খুব সৃজনশীল সমাধান চেষ্টা করেছিলাম তবে এটি সংখ্যাকে বিশেষ চরিত্র হিসাবেও দেখেছি, যা আমার প্রয়োজন অনুসারে নয়। তাই এখানে আমার (ব্যর্থ সাফ) সিগুলের সমাধানের টুইট করা ...

//return true if char is a number
function isNumber (text) {
  if(text) {
    var reg = new RegExp('[0-9]+$');
    return reg.test(text);
  }
  return false;
}

function removeSpecial (text) {
  if(text) {
    var lower = text.toLowerCase();
    var upper = text.toUpperCase();
    var result = "";
    for(var i=0; i<lower.length; ++i) {
      if(isNumber(text[i]) || (lower[i] != upper[i]) || (lower[i].trim() === '')) {
        result += text[i];
      }
    }
    return result;
  }
  return '';
}

আপনি regআপনার প্রথম ফাংশনটিতে ঘোষণা করতে ভুলে গেছেন ।
নোমান আলী

6

সমস্ত অনুসন্ধান করুন (শব্দের অক্ষর || স্পেস):

str.replace(/[^\w ]/, '')

1

এটি ব্যবহার করার চেষ্টা করুন

var result= stringToReplace.replace(/[^\w\s]/gi, '')

এখানে ara ক্যারেটটি অবহেলার জন্য \ ডাব্লু [a-zA-Z0-9_] শব্দের অক্ষরের জন্য এবং space গুলি স্পেসের জন্য / [] / জিআই বিশ্বব্যাপী


0

বিন্দু (।) বিশেষ হিসাবে বিবেচিত হবে না। আমি মোজফেটের এবং সিগলের উত্তরে একটি ওআর শর্ত যুক্ত করেছি:

function isNumber (text) {
      reg = new RegExp('[0-9]+$');
      if(text) {
        return reg.test(text);
      }
      return false;
    }

function removeSpecial (text) {
  if(text) {
    var lower = text.toLowerCase();
    var upper = text.toUpperCase();
    var result = "";
    for(var i=0; i<lower.length; ++i) {
      if(isNumber(text[i]) || (lower[i] != upper[i]) || (lower[i].trim() === '') || (lower[i].trim() === '.')) {
        result += text[i];
      }
    }
    return result;
  }
  return '';
}

0

const input = `#if_1 $(PR_CONTRACT_END_DATE) == '23-09-2019' # 
Test27919<alerts@imimobile.com> #elseif_1 $(PR_CONTRACT_START_DATE) ==  '20-09-2019' #
Sender539<rama.sns@gmail.com> #elseif_1 $(PR_ACCOUNT_ID) == '1234' #
AdestraSID<hello@imimobile.co> #else_1#Test27919<alerts@imimobile.com>#endif_1#`;
const replaceString = input.split('$(').join('->').split(')').join('<-');


console.log(replaceString.match(/(?<=->).*?(?=<-)/g));


-11

যার বিশেষ অক্ষরগুলি আপনি একটি স্ট্রিং থেকে মুছে ফেলতে চান সেগুলির একটি তালিকা প্রস্তুত করুন এবং তারপরে ব্যবহারকারী জাভাস্ক্রিপ্ট সমস্ত বিশেষ অক্ষরগুলি সরিয়ে ফাংশন প্রতিস্থাপন করুন।

var str = 'abc'de#;:sfjkewr47239847duifyh';
alert(str.replace("'","").replace("#","").replace(";","").replace(":",""));

অথবা আপনি একটি পুরো স্ট্রিংয়ের জন্য লুপ চালাতে পারেন এবং একক একক অক্ষরকে ASCII কোডের সাথে তুলনা করতে এবং একটি নতুন স্ট্রিং পুনরায় জেনারেট করতে পারেন।


9
না, দয়া করে এটি করবেন না। এটা সত্যিই মারাত্মক ধীর। এটি নিয়মিত এক্সপ্রেশন ব্যবহার করা অনেক বেশি।
কীথ ইরউইন

এই সমাধানটি কেবল একটি অক্ষর প্রতিস্থাপনের জন্য খুব সুন্দর। আমার ক্ষেত্রে এটি সহায়ক ছিল, ধন্যবাদ।
ওয়াহিদ নাজাফি

প্রতিস্থাপন পদ্ধতিটি বহুবার ব্যবহারের পরিবর্তে, দয়া করে কেবল নিয়মিত এক্সপ্রেশন ব্যবহার করে একবার এটি ব্যবহার করুন।
FAISAL
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.