জাভাস্ক্রিপ্টে স্ট্রিং থেকে সমস্ত অ-সংখ্যাযুক্ত অক্ষরগুলি স্ট্রিপ করুন


700

একটি নন-ডোম পরিস্থিতি বিবেচনা করুন যেখানে আপনি জাভাস্ক্রিপ্ট / ইসিএমএসক্রিপ্ট ব্যবহার করে কোনও স্ট্রিং থেকে সমস্ত অ-সংখ্যাসূচক অক্ষর মুছে ফেলতে চান। পরিসরে 0 - 9থাকা যে কোনও অক্ষর রাখতে হবে।

var myString = 'abc123.8<blah>';

//desired output is 1238

আপনি কীভাবে সরল জাভাস্ক্রিপ্ট এ অর্জন করবেন? দয়া করে মনে রাখবেন এটি একটি ডোম-নন দৃশ্য, তাই ব্রাউজার এবং কী-টিপস ইভেন্টগুলি জড়িত jQuery এবং অন্যান্য সমাধান উপযুক্ত নয়।

উত্তর:


1428

.replaceএকটি রেজেক্সের সাথে স্ট্রিংয়ের পদ্ধতিটি ব্যবহার করুন \D, এটি একটি শর্টহ্যান্ড চরিত্র শ্রেণি যা সমস্ত অ-অঙ্কের সাথে মেলে:

myString = myString.replace(/\D/g,'');

5
ধন্যবাদ সিএসজে; কোথাও আরও তথ্য খুঁজে পেতে \D?
পি.কম্পবেল

34
এটি আমার ডিফল্ট রেজেক্স রেফারেন্স: নিয়মিত- এক্সপ্রেশনগুলি । \ d \ D (অঙ্কগুলি বনাম সমস্ত কিছুর সংখ্যা ছাড়াও) \ w \ W (শব্দের বর্ণনাকারী বনাম সমস্ত কিছু শব্দের অক্ষর বাদে) \ s \ S (হোয়াইটস্পেস বনাম সব কিছুই সাদা অংশ)
সিএসজে

3
কেবল স্পষ্ট করে বলতে গেলে, প্রতিস্থাপনের জন্য সিনট্যাক্সটি এখানে রয়েছে: w3schools.com/jsref/jsref_obj_regexp.asp কারণ ফরোয়ার্ড স্ল্যাশ এবং "জি" সেই কমান্ডের অংশ, রেজিএক্সের অংশ নয়।
মাইকে কে

না replaceসব ব্রাউজারে ঠিক এই সিনট্যাক্স সঙ্গে কাজ করে? মনে হচ্ছে মনে হচ্ছে আমি object has no method 'replace' যখন jQuery এর সাথে ধরেছিলাম এমন পাঠ্য সহ এটি ব্যবহার করার সময় IE এর পুরানো সংস্করণটি পেয়েছিলাম ... বা এরকম কিছু।
cwd

@cwd অতীত বা বর্তমান ব্রাউজারগুলিতে কী সমর্থন করা হয়েছে তা আমার কোনও ধারণা নেই। প্রশ্নটি একটি নন-ডোম প্রসঙ্গ নির্দিষ্ট করেছে, সুতরাং সম্ভবত পোস্টারটি কোনও ওয়েব ব্রাউজারের পরিবেশে স্ক্রিপ্ট করা সম্ভব।
সিএসজে

354

আপনার যদি ভাসা সংখ্যার জন্য বিন্দুটি ছেড়ে দেওয়ার প্রয়োজন হয় তবে এটি ব্যবহার করুন

var s = "-12345.50 €".replace(/[^\d.-]/g, ''); // gives "-12345.50"

6
কোন রেজিপ এক্সপার্ট? কীভাবে এটি কেবলমাত্র একটি একক ডটকে অনুমতি দেবে (সংখ্যার সাথে খুব প্রাসঙ্গিক)। ধন্যবাদ!
কাস্পেরি

1
আপনি কি বোঝাতে চেয়েছেন? ইনপুট এবং আউটপুট উদাহরণ দিন
সর্বোচ্চ 4

2
ভাল নেই: "aaa 2.9px of bbb.".replace(/[^\d.-]/g, '')2.9.কোনো স্ট্রিং একটি সংখ্যা ঘিরে হতে পারে স্ট্রিপ করা উচিত ..
VSync

2
@ সর্বাধিক আপনি আমার জীবন বাঁচিয়েছেন, -(নেতিবাচক) নম্বর কেস পরিচালনা করার জন্য ধন্যবাদ :)
পঙ্কজ পার্কার

4
@ ক্যাস্পেরি সম্ভবত:parseFloat("-1234.5.50 €".replace(/[^\d.-]/g, ''))
এ। জেনেডি

50

আপনার স্ক্রিপ্ট প্রয়োগ যদি তাদের সমর্থন করে তবে একটি নিয়মিত অভিব্যক্তি ব্যবহার করুন। কিছুটা এইরকম:

myString.replace(/[^0-9]/g, '');

12
কোনও কারণে এইভাবে [^ \ d] এর চেয়ে অনেক বেশি পঠনযোগ্য বলে মনে হচ্ছে।
আরমান বিমাটোভ

1
রেজেক্স ডিলিমিটারের পরে জি কি জন্য ??
নেটিভ কোডার


23

সমস্ত অ-অঙ্কের অক্ষরগুলি প্রতিস্থাপনের জন্য আপনি একটি রেজিপ্যাক্স ব্যবহার করতে পারেন :

var myString = 'abc123.8<blah>';
myString = myString.replace(/[^\d]/g, ''); // 1238



0

কৌণিক / আয়নিক / ভ্যুজেএস - আমি সবেমাত্র একটি সহজ পদ্ধতি নিয়ে এসেছি:

stripNaN(txt: any) {
    return txt.toString().replace(/[^a-zA-Z0-9]/g, "");
}

ভিউ ব্যবহার:

<a [href]="'tel:'+stripNaN(single.meta['phone'])" [innerHTML]="stripNaN(single.meta['phone'])"></a>

0

দুর্ভাগ্যক্রমে উপরোক্ত উত্তরগুলির কোনওটিই আমার পক্ষে কার্যকর হয়নি।

দশমিক পয়েন্টার সহ একটি নম্বর আউটপুট দিতে আমি $123,232,122.11(1232332122.11) বা USD 123,122.892(123122.892) অথবা ₹ 98,79,112.50(9879112.5) এর মতো কোনও মুদ্রার মতো মুদ্রার নম্বরগুলি রূপান্তর করতে চেয়েছিলাম।

আমার নিজস্ব রেজেক্স তৈরি করতে হয়েছিল যা দেখতে এরকম কিছু দেখাচ্ছে:

str = str.match(/\d|\./g).join('');

0

সমস্ত অ-সংখ্যাসূচক অক্ষর মুছে ফেলার জন্য দশমিক ফাংশন কিন্তু দশমিক রাখুন (এবং নম্বরটি ফেরত দিন):

parseNum = str => +str.replace(/[^.\d]/g, '');
let str = 'a1b2c.d3e';
console.log(parseNum(str));


-5

আমরা এখন 2017 এ আছি আপনি ES2016 ও ব্যবহার করতে পারেন

var a = 'abc123.8<blah>';
console.log([...a].filter( e => isFinite(e)).join(''));

অথবা

console.log([...'abc123.8<blah>'].filter( e => isFinite(e)).join(''));  

ফলাফল হলো

1238

12
এই ক্রিয়াকলাপটি চালিয়ে যাওয়ার এটি একটি খুব অদক্ষ উপায়।
djheru

এখানে অদক্ষ বা খারাপ কী?
ভ্লাদিস্লাভ কোস্টেনকো

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