Javascript / jquery द्वारा प्रमुख शून्य हटाएं / हटाएं


85

जावास्क्रिप्ट, jquery द्वारा नंबर (किसी भी स्ट्रिंग) से अग्रणी शून्य को हटाने या ट्रंक करने के लिए समाधान सुझाएं।


4
स्ट्रिंग "000000000" होने पर क्या होना चाहिए
रोबर्ट

क्या संख्या हमेशा पूर्णांक होने की उम्मीद है, या इसे दशमलव (जैसे '00000.5') के साथ संख्या को संभालना चाहिए ?
क्रिश्चियन सी। साल्वादो

यह किसी भी दिए गए स्ट्रिंग के लिए काम देना चाहिए। यानी "00000evsdd" को "evsdd" देना चाहिए, "00000.5" को ".5 देना चाहिए"
सोमनाथ

जवाबों:


197

आप स्ट्रिंग की शुरुआत में शून्य से मेल खाने वाली एक नियमित अभिव्यक्ति का उपयोग कर सकते हैं:

s = s.replace(/^0+/, '');

13
@SomnathMuluk: यह बहुत सारे जावास्क्रिप्ट प्रोग्रामर के लिए एक आश्चर्य होगा!
बर्ट

@Guffa: मैं इसे jquery कोड में उपयोग कर रहा हूं..मुझे इस वजह से काम नहीं करना चाहिए।
सोमनाथ मुलुक

2
@ सोमनाथ, jQuery आईएस जावास्क्रिप्ट है। यदि जावास्क्रिप्ट में कुछ काम करता है तो यह काम करना जारी रखेगा यदि आप jQuery का उपयोग कर रहे हैं।
अबे मिसेलर

5
क्यों होता है पतन? यदि आप यह नहीं समझाते कि आप क्या सोचते हैं, तो यह उत्तर को बेहतर नहीं बना सकता है।
गुफा

2
s = s.replace (/ ^ 0 + /, '') "00" को "" (एक शून्य के साथ स्ट्रिंग के बजाय खाली स्ट्रिंग) में रूपांतरित कर देगा, जो कि ज्यादातर मामलों में अवांछनीय होता है, इसे एक फ़ंक्शन में बेहतर रूप से समझाया जाता है और पंक्ति जोड़ें: यदि (s == "") s = "0";
ओलिवर कोनिग

31

मैं संख्या () फ़ंक्शन का उपयोग करूंगा:

var str = "00001";
str = Number(str).toString();
>> "1"

या मैं अपने तार को 1 से गुणा करूंगा

var str = "00000000002346301625363";
str = (str * 1).toString();
>> "2346301625363"

2
यह 2 ^ 53 से अधिक मूल्य के साथ काम नहीं करेगा। संख्या ("009007199254740993") .String () "9007199254740992" होगी
मदरसन

13

शायद थोड़ी देर हो जाए, लेकिन मैं अपने 2 सेंट जोड़ना चाहता हूं।

यदि आपका स्ट्रिंग हमेशा एक प्रमुख संख्या का प्रतिनिधित्व करता है, तो संभव अग्रणी शून्य के साथ, आप बस '+' ऑपरेटर का उपयोग करके स्ट्रिंग को एक संख्या में डाल सकते हैं।

जैसे

x= "00005";
alert(typeof x); //"string"
alert(x);// "00005"

x = +x ; //or x= +"00005"; //do NOT confuse with x+=x, which will only concatenate the value
alert(typeof x); //number , voila!
alert(x); // 5 (as number)

यदि आपका तार एक संख्या का प्रतिनिधित्व नहीं करता है और आपको केवल 0 के अन्य समाधानों का उपयोग करने की आवश्यकता है, लेकिन यदि आपको केवल संख्या के रूप में उनकी आवश्यकता है, तो यह सबसे छोटा तरीका है।

और FYI करें, आप इसके विपरीत कर सकते हैं, संख्याओं को स्ट्रिंग्स के रूप में कार्य करने के लिए यदि आप उन्हें एक खाली स्ट्रिंग प्रदान करते हैं, जैसे:

x = 5;
alert(typeof x); //number
x = x+"";
alert(typeof x); //string

आशा है कि यह किसी की मदद करता है


यह 2 ^ 53 से अधिक मूल्य के साथ काम नहीं करेगा। । (+ "009007199254740993") toString () हो जाएगा "9007199254740992"
madreason

13

चूंकि आपने "कोई भी स्ट्रिंग" कहा है, इसलिए मैं मान रहा हूं कि यह एक स्ट्रिंग है जिसे आप संभालना चाहते हैं।

"00012  34 0000432    0035"

तो, रेगेक्स जाने का रास्ता है:

var trimmed = s.replace(/\b0+/g, "");

और यह एक "000000" मूल्य के नुकसान को रोक देगा।

var trimmed = s.replace(/\b(0(?!\b))+/g, "")

आप यहां एक काम करने का उदाहरण देख सकते हैं


3

मुझे जावास्क्रिप्ट में अग्रणी शून्य (संख्या या किसी स्ट्रिंग) को ट्रंक करने के लिए यह समाधान मिला:

<script language="JavaScript" type="text/javascript">
<!--
function trimNumber(s) {
  while (s.substr(0,1) == '0' && s.length>1) { s = s.substr(1,9999); }
  return s;
}

var s1 = '00123';
var s2 = '000assa';
var s3 = 'assa34300';
var s4 = 'ssa';
var s5 = '121212000';

alert(s1 + '=' + trimNumber(s1));
alert(s2 + '=' + trimNumber(s2));
alert(s3 + '=' + trimNumber(s3));
alert(s4 + '=' + trimNumber(s4));
alert(s5 + '=' + trimNumber(s5));
// end hiding contents -->
</script>

4
यह बहुत अच्छा कोड नहीं है। स्ट्रिंग की लंबाई के लिए जांच पूरी तरह से अति सूक्ष्म है, इसका मूल्यांकन कभी नहीं किया जाएगा false9999दूसरे पैरामीटर के रूप में उपयोग की substrआवश्यकता नहीं है। बस उपयोग करें while (s.substr(0,1) == '0') s = s.substr(1);। इसके अलावा, वह कोड स्निपेट वास्तव में पुराना लग रहा है, टैग की languageविशेषता को scriptलंबे समय से हटा दिया गया है, और scriptटैग के अंदर टिप्पणियों का उपयोग केवल उन ब्राउज़रों के लिए आवश्यक है जो scriptटैग को बिल्कुल नहीं समझते हैं , जैसे इंटरनेट एक्सप्लोरर 1.0।
गुफ़ा


2

इसे इस्तेमाल करे,

   function ltrim(str, chars) {
        chars = chars || "\\s";
        return str.replace(new RegExp("^[" + chars + "]+", "g"), "");
    }

    var str =ltrim("01545878","0");

अधिक यहाँ


यह दी गई स्ट्रिंग मान के लिए समस्या है
सोमनाथ मुलुक

@SomnathMuluk: क्या समस्या है। यहाँ काम कर रहे उदाहरण jsfiddle.net/AxeUU
Gowri

2

बस निम्नलिखित के रूप में एक से गुणा करने का प्रयास करें:

"00123" * 1; // संख्या के रूप में प्राप्त करें
"00123" * 1 + ""; // स्ट्रिंग के रूप में प्राप्त करें


1

आपको "parseInt" फ़ंक्शन के "मूलांक" पैरामीटर का उपयोग करना चाहिए: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/parse.nt?redirectlocale=en-US&redirectslug=JavaScript%2FReference%2 % 2FGlobal_Objects% 2FparseInt

parseInt ('015', 10) => 15

यदि आप इसका उपयोग नहीं करते हैं, तो कुछ जावास्क्रिप्ट इंजन इसे ऑक्टल पार्सइंट के रूप में उपयोग कर सकते हैं ('015') => 0


1

यदि संख्या int उपयोग है

"" + parseInt(str)

यदि संख्या फ्लोट उपयोग है

"" + parseFloat(str)

0

रेगेक्स के बिना एक और तरीका:

function trimLeadingZerosSubstr(str) {
    var xLastChr = str.length - 1, xChrIdx = 0;
    while (str[xChrIdx] === "0" && xChrIdx < xLastChr) {
        xChrIdx++;
    }
    return xChrIdx > 0 ? str.substr(xChrIdx) : str;
}

शॉर्ट स्ट्रिंग के साथ यह रेगेक्स ( jsperf ) से अधिक तेज़ होगा


हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.