একটি স্ট্রিং থেকে একটি সংখ্যা বের করুন ("পেতে")


352

আমার কাছে জাভাস্ক্রিপ্টে একটি স্ট্রিং রয়েছে যেমন `# box2 'এবং আমি এটি থেকে' 2 'চাই।

চেষ্টা করা হয়েছে:

var thestring = $(this).attr('href');
var thenum = thestring.replace( /(^.+)(\w\d+\w)(.+$)/i,'$2');
alert(thenum);

এটি এখনও সতর্কতার মধ্যে # বাক্স 2 ফেরায়, আমি কীভাবে এটি কাজ করতে পারি?

এটি শেষে সংযুক্ত যে কোনও দৈর্ঘ্যের সংখ্যার জন্য সামঞ্জস্য করা দরকার।


1
আপনি সহজভাবে এটি করতে পারেন। এটা ভাল কাজ করবে। var thestring = $ (এটি) .attr ('href'); var thenum = parsefloat (thestring); সতর্কতা (thenum);
বিবেক শুক্ল

1
এই কোডটি আমার পক্ষে ভাল কাজ করে তবে একটি ক্ষেত্রে আমার স্ট্রিং '2.5 / মাইল' রয়েছে এবং আমি এর মধ্যে 2.5 টি বের করতে চাই। উপরের কোডটি আমাকে 2.5 এর পরিবর্তে 25 দেয়
বিজয় সিং

উত্তর:


576

এই নির্দিষ্ট উদাহরণের জন্য,

 var thenum = thestring.replace( /^\D+/g, ''); // replace all leading non-digits with nothing

সাধারণ ক্ষেত্রে:

 thenum = "foo3bar5".match(/\d+/)[0] // "3"

যেহেতু এই উত্তরটি কোনও কারণে জনপ্রিয়তা অর্জন করেছে, তাই এখানে একটি বোনাস রয়েছে: রিজেক্স জেনারেটর।

function getre(str, num) {
  if(str === num) return 'nice try';
  var res = [/^\D+/g,/\D+$/g,/^\D+|\D+$/g,/\D+/g,/\D.*/g, /.*\D/g,/^\D+|\D.*$/g,/.*\D(?=\d)|\D+$/g];
  for(var i = 0; i < res.length; i++)
    if(str.replace(res[i], '') === num) 
      return 'num = str.replace(/' + res[i].source + '/g, "")';
  return 'no idea';
};
function update() {
  $ = function(x) { return document.getElementById(x) };
  var re = getre($('str').value, $('num').value);
  $('re').innerHTML = 'Numex speaks: <code>' + re + '</code>';
}
<p>Hi, I'm Numex, the Number Extractor Oracle.
<p>What is your string? <input id="str" value="42abc"></p>
<p>What number do you want to extract? <input id="num" value="42"></p>
<p><button onclick="update()">Insert Coin</button></p>
<p id="re"></p>


15
-1, দেখা "#box2_col3".replace( /^\D+/g, '')উচিত ছিল 2, না 2_col3
শিপলু মোকাদ্দিম

2
@ শিপলু.মোকাডিডি.আইএম: আমি #box2_col3প্রশ্নের কোনও উল্লেখ দেখতে পাচ্ছি না ।
জর্জি

1
হ্যাঁ এর কোন রেফারেন্স নেই #box2_col3। তবে ব্যবহার করা রিজেক্স ওপি দেখুন ( \w)(.+$)) যা স্পষ্টভাবে নির্দেশ করে যে সংখ্যার পরে অন্য অক্ষর রয়েছে।
শিপলু মোকাদ্দিম

3
সেক্ষেত্রে শেষের আগে সংখ্যা থাকলে আপনার প্যাটার্নটিও ব্যর্থ হয়।
শিপলু মোকাদ্দিম

2
আপনি বানাতে পারে replaceব্যবহার করে নেতৃস্থানীয় সংখ্যার কাজ: theString.replace(/^.*\D+/g, '');কিন্তু shiplu.mokadd.im এর সমাধান উত্তম।
ল্যান্ডনস্ক্রপ

225

আপনার নিম্নলিখিত চেষ্টা করা উচিত:

var txt = "#div-name-1234-characteristic:561613213213";
var numb = txt.match(/\d/g);
numb = numb.join("");
alert (numb);​

ফলাফল

1234561613213213

1
সুন্দর উত্তর তবে আমি যদি পৃথকভাবে সংখ্যার সেট চাই want অর্থাৎ 1234, 5616133 ...
আমার সিং

অথবা ওয়ান-লাইনার + সংখ্যাকে পার্সিং করছে:parseInt(txt.match(/\d/g).join(''), 10)
লুকাস লিয়িসিস

" $ 20.0 ".match(/\d/g).join('') => "200" (কেবল বলছি)
vsync

90

আমি মনে করি এই নিয়মিত প্রকাশটি আপনার উদ্দেশ্যটি পরিবেশন করবে:

var num = txt.replace(/[^0-9]/g,'');

কোথায় txtআপনার স্ট্রিং।

এটি মূলত এমন কোনও কিছু ছিনিয়ে দেয় যা কোনও অঙ্ক নয়।

আমি মনে করি আপনি এটি ব্যবহার করে একই জিনিস অর্জন করতে পারবেন:

var num = txt.replace(/\D/g,'');

1
/[^0-9]/gপঠনযোগ্যতার জন্য +1। এখানে বেশিরভাগ উত্তরের সাথেও ব্যবহৃত হয়: stackoverflow.com/q/1862130/1066234
কাই নোক

58

নিম্নলিখিতগুলি চেষ্টা করুন: string.replace(/[^0-9]/g, '');এটি স্ট্রিংয়ের মধ্যে কেবল অংক রেখে সমস্ত অ-অঙ্কের অক্ষর মুছে ফেলবে

function retnum(str) { 
    var num = str.replace(/[^0-9]/g, ''); 
    return parseInt(num,10); 
}

console.log('abca12bc45qw'.replace(/[^0-9]/g, ''));
console.log('#box2'.replace(/[^0-9]/g, ''));


2
এটি গৃহীত উত্তরের চেয়ে ভাল, যেহেতু এটি বিশ্বব্যাপী সমস্ত নন-নম্বর এবং বিটিডব্লু /[^0-9]/gপ্রতিস্থাপন করে , এটি প্রতিস্থাপন করা যেতে পারে /[^\d]/g
সিপিএইচপিথন

52

ম্যাচ ফাংশন ব্যবহার করে।

var thenum = thestring.match(/\d+$/)[0];
alert(thenum);

jsfiddle


1
এছাড়াও আপনি এটির পূর্ণসংখ্যার ভার + তারপর + = thestring.match (/ \ d + $ /) [0] করতে unary '+' যুক্ত করতে পারেন;
সের্গে ওনিশচেঙ্কো

আমার ধারণা এটি 1 ডিজিটের সংখ্যার জন্য কাজ করে না? (আমি বুঝতে পারি যে প্রশ্নটি 1 ডিজিটের সংখ্যার জন্য ছিল, তবে আমি সম্ভাব্য সংখ্যাগুলি> 10 এর দিকে দেখছি)
ফেলিক্স

@নিসমান্ড অনুমান করবেন না । নিজে চেষ্টা করুন। এমনকি আপনি ঝাঁকুনিটি দেখতে পান নি।
শিপলু মোকাদ্দিম

এটা খুবই পছন্দ করি. কোনও উপাদানটি স্পর্শ বা সংশোধন ছাড়াই ভেরিয়েবলের মধ্যে সংখ্যাটি বের করার একটি সহজ উপায়। আমি স্ট্রিংয়ের অভ্যন্তরে একাধিক কাকতালীর জন্য প্রতিটিের সাথে একটি কম্বোকে প্রশংসা করব। অর্থাত, স্ট্রিং 12a55 সর্বশেষ নয়, শেষ সংখ্যাটি রিপোর্ট করে।
এম

1
@ ইয়েজেগেনিআফানসিয়েভ এটি করা উচিত নয়। আসল প্রশ্নটি পরীক্ষা করে দেখুন। বিশেষভাবে শেষ লাইন। সংখ্যাটি শেষে হওয়া উচিত।
শিপলু মোকাদ্দিম

33

এই কোডটির সাথে উপরে উল্লিখিত সমস্ত সংমিশ্রণের চেষ্টা করে এবং এটি কাজ করে চলেছে, কেবলমাত্র সেই স্ট্রিং -> এ কাজ করেছিল(12) 3456-7890

var str="(12) 3456-7890";
str.replace( /\D+/g, '');

ফলাফল: "1234567890"

ওবস: আমি জানি যে এর মতো একটি স্ট্রিং অ্যাটর্সে থাকবে না তবে যাই হোক না কেন, সমাধান আরও ভাল, কারণ এটি আরও সম্পূর্ণ।


আমার মনে হয় আরও ভাল হবে str.match(/\d+/g).map(Number)এটি কোনও অ্যারে ফিরিয়ে দেবে
আর্টেম বেরনাটস্কি

33

এবং এটি একটি স্নিপেট যা মুদ্রা এবং ফর্ম্যাটিংয়ের সাথে দামগুলি আহরণ করে:

var price = "£1,739.12";
parseFloat(price.replace( /[^\d\.]*/g, '')); // 1739.12

13

আপনি দুর্দান্ত পার্সেন্ট পদ্ধতি ব্যবহার করতে পারেন

এটি নেতৃস্থানীয় অঙ্কগুলিকে একটি সংখ্যায় রূপান্তর করবে

parseInt("-10px");
// will give you -10

18
এটি কেবল তখনই কাজ করে যখন সংখ্যাটি স্ট্রিংয়ের শুরুতে হয়
রাশজ

2
এটির ফিরে আসা এনএএন
আহমেদ সৈয়দ


4

আপনি নিয়মিত ভাব প্রকাশ করতে পারেন।

var txt="some text 2";
var numb = txt.match(/\d/g);
alert (numb);

এটি সতর্ক করবে 2।


4
-1 একাধিক সংখ্যা ধরা হবে না এবং সতর্কতার সাথে অ্যারে ব্যবহারের জন্য
শিপলু মোকাদ্দিম

4

সঙ্গে রেগুলার এক্সপ্রেশন , কিভাবে একটি স্ট্রিং থেকে নম্বর পেতে, উদাহরণস্বরূপ:

String myString = "my 2 first gifts were made by my 4 brothers";
myString = myString .replaceAll("\\D+","");
System.out.println("myString : " + myString);

ফলাফল myString" 24"

আপনি এই চলমান কোডের একটি উদাহরণ এখানে দেখতে পাবেন: http://ideone.com/iOCf5G


5
জাভা! == জাভাস্ক্রিপ্ট - প্রতিস্থাপনের সবকটি স্ট্যান্ডার্ড জাভাস্ক্রিপ্টে নেই। JQuery এর মতো কেবল কয়েকটি লাইব্রেরিতেই সেই পদ্ধতি রয়েছে। ভবিষ্যতে, আপনার স্পষ্ট করা উচিত।
লেবি রবার্টস

3

আপনি নীচের হিসাবে অ্যান্ডস্কোর স্ট্রিং লাইব্রেরি ব্যবহার করতে পারেন

var common="#box"
var href="#box1"

_(href).strRight(common)

ফলাফলটি হবে: 1

দেখুন: https://github.com/epeli/:30core.string

ডেমো:
http://jsfiddle.net/abdennour/Vyqtt/
এইচটিএমএল কোড:

<p>
    <a href="#box1" >img1</a>
    <a href="#box2" >img2</a>
    <a href="#box3" >img3</a>
    <a href="#box4" >img4</a>
</p>
<div style="font-size:30px"></div>

জেএস কোড:

var comm="#box"
$('a').click(function(){
  $('div').html(_($(this).attr('href')).strRight(comm))})

যদি আপনার নিম্নলিখিত হিসাবে প্রত্যয় থাকে:

href="box1az" 

আপনি পরবর্তী ডেমো ব্যবহার করতে পারেন:

http://jsfiddle.net/abdennour/Vyqtt/1/

function retrieveNumber(all,prefix,suffix){
 var left=_(all).strRight(prefix);
 return _(left).strLeft(suffix);

}

3

এখানে একটি সল্ট। যে কোন তথ্য জন্য পরীক্ষা করে

var someStr = 'abc'; // add 123 to string to see inverse

var thenum = someStr.match(/\d+/);

if (thenum != null )
{
    console.log(thenum[0]);
}
else
{
 console.log('no number');
}

2

ত্রুটি না পেয়ে স্ট্রিংয়ে প্রথম নম্বর পেতে এই এক-লাইন কোডটি ব্যবহার করুন:

var myInt = parseInt(myString.replace(/^[^0-9]+/, ''), 10);

2

দয়া করে নীচে জাভা স্ক্রিপ্টগুলি দেখুন, সেখানে আপনি কেবলমাত্র নম্বর পেতে পারেন

var txt = "abc1234char5678#!9";
var str = txt.match(/\d+/g, "")+'';
var s = str.split(',').join('');
alert(Number(s));

আউটপুট: 1234567789


2

আপনি একটি রেজেক্স এক্সপ্রেশন ব্যবহার করে স্ট্রিং থেকে সংখ্যাগুলি বের করতে পারেন:

let string = "xxfdx25y93.34xxd73";
let res = string.replace(/\D/g, "");
console.log(res); 

আউটপুট: 25933473


1
var elValue     = "-12,erer3  4,-990.234sdsd";

var isNegetive = false;
if(elValue.indexOf("-")==0) isNegetive=true;

elValue     = elValue.replace( /[^\d\.]*/g, '');
elValue     = isNaN(Number(elValue)) ? 0 : Number(elValue);

if(isNegetive) elValue = 0 - elValue;

alert(elValue); //-1234990.234

বিজ্ঞাপন একটি ব্যাখ্যা। যেমন আপনি কেন এই রেজেক্স ব্যবহার করেন।
মেন্টালুর্গ

1

এই উত্তরটি বেশিরভাগ দৃশ্যের অন্তর্ভুক্ত করবে। ব্যবহারকারী যখন ফোন নম্বরটি কপি করার চেষ্টা করবেন তখন আমি এই পরিস্থিতিটি পার করতে পারি

  $('#help_number').keyup(function(){
    $(this).val().match(/\d+/g).join("")
  });

ব্যাখ্যা:

str= "34%^gd 5-67 6-6ds"

str.match(/\d+/g)

এটি আউটপুট হিসাবে স্ট্রিংয়ের অ্যারে দেবে >> ["34", "56766"]

str.match(/\d+/g).join("")

যোগদানের ফলে অ্যারে ডেটাটিকে একক স্ট্রিংয়ে রূপান্তরিত করা হবে এবং যুক্ত করা হবে

আউটপুট >> "3456766"

আমার উদাহরণে আমার 209-356-6788 হিসাবে আউটপুট প্রয়োজন তাই আমি প্রতিস্থাপনটি ব্যবহার করেছি

  $('#help_number').keyup(function(){
    $(this).val($(this).val().match(/\d+/g).join("").replace(/(\d{3})\-?(\d{3})\-?(\d{4})/,'$1-$2-$3'))
  });

0
changeStrangeDate(dateString: string) {
var sum = 0;
var numbers = dateString.match(/\d+/g);
if (numbers.length > 1) {
  numbers.forEach(element => {
    sum += parseInt(element);
  }
  );
}
console.log(new Date(sum).toDateString());
return new Date(sum).toUTCString();

}

আপনি এটি এর মতো করতে পারেন এবং তারপরে প্যারামিটার সহ যেখানে আপনার প্রয়োজন সেখানে ফাংশনটি কল করতে পারেন।

this.changeStrangeDate('/Date(1551401820000-0100)/');

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