टाइपस्क्रिप्ट में एक स्ट्रिंग को संख्या में कैसे बदलें?


873

किसी संख्या के स्ट्रिंग प्रतिनिधित्व को देखते हुए, मैं इसे numberटाइपस्क्रिप्ट में टाइप करने के लिए कैसे परिवर्तित कर सकता हूं ?

var numberString: string = "1234";
var numberValue: number = /* what should I do with `numberString`? */;


2
@o_nix यह संकलक को चालित करता है, यह टाइप प्रकार नहीं बदलता है: console.log(typeof <number><any>"1", typeof Number("1"))प्रिंट करेगा string number
k0pernikus

जवाबों:


1376

बिल्कुल जावास्क्रिप्ट की तरह , आप parseIntया parseFloatफ़ंक्शंस का उपयोग कर सकते हैं , या बस यूनीरी +ऑपरेटर का उपयोग कर सकते हैं :

var x = "32";
var y: number = +x;

सभी उल्लिखित तकनीकों में सही टाइपिंग होगी और सरल दशमलव पूर्णांक स्ट्रिंग्स को सही तरह से पार्स करेगा "123", लेकिन विभिन्न अन्य, संभवतः अपेक्षित, मामलों (जैसे "123.45") और कोने के मामलों (जैसे null) के लिए अलग-अलग व्यवहार करेगा ।

रूपांतरण तालिकाइस उत्तर से ली गई तालिका


236
छोटा संकेत: parseInt (अशक्त) NaN रिटर्न + लेकिन शून्य रिटर्न 0
रॉबिन जे

17
फिलिप के उच्च-श्रेणी वाले उत्तर के रूप में यहां स्पष्ट नहीं है कि यह टाइपस्क्रिप्ट तरीका है।
पैट्रिक

10
टाइपस्क्रिप्ट कोई रास्ता नहीं है क्योंकि टाइपस्क्रिप्ट सिर्फ जावास्क्रिप्ट है।
thedayturns

47
@thedayturns प्रोग्रामिंग का कोई तरीका नहीं है क्योंकि प्रोग्रामिंग सिर्फ बिजली है
jiroch

1
@Patrick सुनिश्चित नहीं हैं कि आप "टाइपस्क्रिप्ट" तरीके से क्यों कॉल कर रहे हैं क्योंकि यह भी सिर्फ सादे जावास्क्रिप्ट है ...
सैंडी

1089

यह करने के लिए टाइपस्क्रिप्ट तरीका होगा:

Number('1234') // 1234
Number('9BX9') // NaN

जैसा कि यहां बताया गया है: https://stackoverflow.com/a/23440948/2083492


4
नोट: आप isNaNफ़ंक्शन का उपयोग करके NaN के लिए जाँच कर सकते हैं ।
हेनरिक उलब्रिच

2
ध्यान दें कि यह काम नहीं करेगा: मान दें: संख्या = valueAsString;
योनेक्सबैट

1
मुझे लगता है कि नई संख्या ("1234")। valueOf () वास्तव में हम सब क्या देख रहे हैं-
chrismarx

23
@Devid - आप सरल कर सकते हैं let a = Number('x') || 0;- Number('x')वापस आ जाएंगे NaN, जो कि "गलत" है। इसलिए, टर्नरी स्टेटमेंट का उपयोग करने और दो बार पार्स करने की तुलना में बहुत अधिक क्लीनर और यकीनन (थोड़ा) aसौंपा जाएगा 0.
ज्योफ जेम्स

4
@ Paul0515 आप इसे सही जवाब देने के लिए अपडेट कर सकते हैं
क्रिस लैंग

94

हमारे साथी कोणीय उपयोगकर्ताओं के लिए:

एक टेम्पलेट के भीतर , Number(x)और parseInt(x)एक त्रुटि फेंकता है, और +xइसका कोई प्रभाव नहीं है। वैध कास्टिंग होगी x*1या x/1


यह तो बहुत ही अच्छी बात है! जैसा कि आपने HTML + x में कहा है कि संख्या में
परिवर्तन

3
ऐसा इसलिए Numberहै क्योंकि मूल्यांकन के दायरे में नहीं है। आप class MyComponent { Number = Number; }इसे उपयोग करने के लिए लिख सकते हैं ।
एलुआन हदद

58

जैसा कि यहां अन्य उत्तरों द्वारा दिखाया गया है, रूपांतरण करने के कई तरीके हैं:

Number('123');
+'123';
parseInt('123');
parseFloat('123.45')

मैं parseIntहालांकि एक और बात का उल्लेख करना चाहता हूं ।

उपयोग करते समय parseInt, यह हमेशा मूलांक पैरामीटर को पारित करने के लिए समझ में आता है । दशमलव रूपांतरण के लिए, जो है 10। यह पैरामीटर के लिए डिफ़ॉल्ट मान है, यही वजह है कि इसे छोड़ा जा सकता है। द्विआधारी के लिए यह एक है 2और 16हेक्साडेसिमल के लिए। दरअसल, 2 और 36 कार्यों के बीच कोई भी मूलांक।

parseInt('123')         // 123 (don't do this)
parseInt('123', 10)     // 123 (much better)

parseInt('1101', 2)     // 13
parseInt('0xfae3', 16)  // 64227

parseIntसमारोह, ठीक है, तार को पार्स करता है उन्हें संख्या में बदलने के लिए। कुछ जेएस कार्यान्वयनों में, parseIntअष्टकोणीय के रूप में प्रमुख जीरो पर्स:

हालांकि ECMAScript 3 द्वारा हतोत्साहित किया गया और ECMAScript 5 द्वारा निषिद्ध है, कई कार्यान्वयन एक संख्यात्मक स्ट्रिंग की शुरुआत करते हैं जिसकी शुरुआत 0 से होती है। निम्नलिखित में एक अष्टक परिणाम हो सकता है, या इसका एक दशमलव परिणाम हो सकता है। इस अविश्वसनीय व्यवहार से बचने के लिए हमेशा एक मूलांक निर्दिष्ट करें।

- एमडीएन

तथ्य यह है कि कोड स्पष्ट हो जाता है मूलांक पैरामीटर को निर्दिष्ट करने का एक अच्छा पक्ष प्रभाव है।

चूँकि parseFloatमूलांक 10 में केवल सांख्यिक अभिव्यक्तियाँ होती हैं, इसलिए यहाँ मूलांक पैरामीटर की कोई आवश्यकता नहीं है।

इस पर अधिक:


और एक और: ~~ '123' (आंतरिक ToInt32 का उपयोग करके)
aMarCruz

@aMarCruz सच है, लेकिन अगर यह शब्द उपयोगी है, तो मैं बहस करूंगा
फेबियन लाउर

52

रयान ने जो कहा, उस पर विस्तार से टाइपस्क्रिप्ट ने सामान्य रूप से जावास्क्रिप्ट मुहावरों को अपनाया।

var n = +"1"; // the unary + converts to number
var b = !!"2"; // the !! converts truthy to true, and falsy to false
var s = ""+3; // the ""+ converts to string via toString()

जावास्क्रिप्ट प्रकार रूपांतरण पर सभी दिलचस्प गहराई से विवरण ।


22

आप निम्न में से किसी भी तरीके का अनुसरण कर सकते हैं।

var str = '54';

var num = +str; //easy way by using + operator
var num = parseInt(str); //by using the parseInt operation 

13

संख्या रूपांतरण के लिए स्ट्रिंग:

टाइपस्क्रिप्ट में हम एक स्ट्रिंग को निम्नलिखित तरीकों से संख्या में बदलते हैं:

  • ParseInt(): यह फ़ंक्शन 2 तर्क लेता है, पहला पार्स करने के लिए एक स्ट्रिंग है। दूसरा मूलांक है (गणितीय अंक प्रणाली में आधार, उदाहरण के लिए 10 दशमलव के लिए और द्विआधारी के लिए 2)। यह पूर्णांक संख्या देता है, यदि पहले वर्ण को संख्या में परिवर्तित नहीं किया जा सकता है, NaNतो वापस कर दिया जाएगा।
  • ParseFloat(): एक तर्क के रूप में लिया जाता है, जिसे हम पार्स करना चाहते हैं, और एक अस्थायी बिंदु संख्या लौटाता है। यदि मान को किसी संख्या में परिवर्तित नहीं किया जा सकता है, NaNतो लौटा दिया जाता है।
  • + ऑपरेटर: ऑपरेटर जब उचित रूप से उपयोग किया जाता है तो एक संख्या में एक स्ट्रिंग मान को कम कर सकता है।

उदाहरण:

/*    parseInt   */

// note that a whole number is returned, so it will round the number
console.log(parseInt('51.023124'));

// parseInt will 'cut off' any part of the string which is not a number
console.log(parseInt('5adfe1234'));

// When the string starts with non number NaN is returned
console.log(parseInt('z123'));

console.log('--------');

/*    parseFloat   */

// parses the string into a number and keeping the precision of the number
console.log(typeof parseFloat('1.12321423'));

// parseFloat will 'cut off' any part of the string which is not a number
console.log(parseFloat('5.5abc'));

console.log('--------');

/*   + operator   */

let myString = '12345'

console.log(typeof +myString);

let myOtherString = '10ab'

// + operator will not cut off any 'non number' string part and will return NaN
console.log(+myOtherString);

कौन सा उपयोग करें?

  1. का प्रयोग करें ParseInt()जब आप चाहते हैं एक स्ट्रिंग एक करने के लिए परिवर्तित पूर्णांक । हालाँकि, डेटा प्रकार अभी भी एक फ्लोट है, क्योंकि सभी संख्या मान TS में फ्लोटिंग पॉइंट मान हैं । जब आप पार्स करना चाहते हैं तो उस संख्या के मूलांक को निर्दिष्ट करने की आवश्यकता होने पर इस पद्धति का उपयोग करें।
  2. ParseFloat()जब आप एक स्ट्रिंग एक अस्थायी बिंदु संख्या में पार्स करने की जरूरत है का उपयोग करें ।
  3. +इसे एक फ्लोटिंग पॉइंट संख्या में ज़ब्त करने के लिए आप स्ट्रिंग से पहले ऑपरेटर का उपयोग कर सकते हैं । इसका फायदा यह है कि सिंटैक्स बहुत कम है।

7

सबसे आसान तरीका + strVal या संख्या (strVal) का उपयोग करना है

उदाहरण:

let strVal1 = "123.5"
let strVal2 = "One"
let val1a = +strVal1
let val1b = Number(strVal1)
let val1c = parseFloat(strVal1)
let val1d = parseInt(strVal1)
let val1e = +strVal1 - parseInt(strVal1)
let val2a = +strVal2

console.log("val1a->", val1a) // 123.5
console.log("val1b->", val1b) // 123.5
console.log("val1c->", val1c) // 123.5
console.log("val1d->", val1d) // 123
console.log("val1e->", val1e) // 0.5
console.log("val2a->", val2a) // NaN


2

फ़ंक्शन को => कनवर्ज़निंग ('10 .00 ') के साथ कॉल करें

parseFloat (string) => इसका उपयोग फ्लोट में परिवर्तित करने के लिए किया जा सकता है, toFixed (4) => कितना दशमलव तक

parseInt (str) => इसका उपयोग पूर्णांक में बदलने के लिए किया जा सकता है

convertstring(string){
    let number_parsed: any = parseFloat(string).toFixed(4)
    return number_parsed
}

2

var myNumber: number = 1200;
//convert to hexadecimal value
console.log(myNumber.toString(16)); //will return  4b0
//Other way of converting to hexadecimal
console.log(Math.abs(myNumber).toString(16)); //will return  4b0
//convert to decimal value
console.log(parseFloat(myNumber.toString()).toFixed(2)); //will return  1200.00

ऑनलाइन नंबर रूपांतरण उपकरण

नंबर कनवर्टर



0

आप में से बहुत से लोगों को आयनिक प्रोग्रामिंग स्थितियों में डेटा प्रकारों को परिवर्तित करने में कठिनाई हो रही है, क्योंकि यह बहुत ही नई भाषा है, यहाँ मैं उपयोगकर्ता को निर्देश जानूंगा कि डेटा आयनिक प्रकारों को स्ट्रिंग डेटा में कैसे परिवर्तित किया जाए। पूर्णांक लिखें।

प्रोग्रामिंग भाषाओं में जैसे जावा, php, c, c ++, ... सभी आसानी से डेटा स्थानांतरित कर सकते हैं, फिर आयनिक में भी हमारे लिए डेटा रूपांतरण बना सकते हैं अन्य प्रोग्रामिंग भाषाओं में भी कम से कम एक आसान तरीका है।

this.mPosition = parseInt("");

0

यदि आप केवल प्रकारों के बारे में बात कर रहे हैं, जैसा कि अन्य लोगों ने कहा, पार्सइंट () आदि सही प्रकार लौटाएगा। इसके अलावा, यदि किसी भी कारण से मान एक संख्या या एक स्ट्रिंग हो सकता है और आप parseInt () को कॉल नहीं करना चाहते हैं, तो टाइपो अभिव्यक्तियाँ भी सही प्रकार पर डाली जाएंगी:

function f(value:number|string){
  if(typeof value==='number'){
   // value : number
  }else {
   // value : string
  }
}

0

यहाँ StrToNumber फ़ंक्शन का एक संशोधित संस्करण है। पहले जैसा,

  1. यह एक वैकल्पिक संकेत को संख्यात्मक मान के सामने या पीछे दिखाई देता है।
  2. यह सत्यापित करने के लिए एक जाँच करता है कि स्ट्रिंग के सिर या पूंछ पर केवल एक चिन्ह है।
  3. यदि कोई त्रुटि होती है, तो "पारित" डिफ़ॉल्ट मान लौटाया जाता है।

यह प्रतिक्रिया एक संभव समाधान है जो मेरे पिछले पोस्ट की तुलना में प्रारंभिक प्रश्न के लिए बेहतर है।

   static StrToNumber(val: string, defaultVal:number = 0): number
   {        
      let result:number = defaultVal;      
      if(val == null) 
         return result;            
      if(val.length == 0) 
         return result;      
      val = val.trim();
      if(val.length == 0) 
         return(result);
      let sign:number = 1;     
      //
      // . obtain sign from string, and place result in "sign" local variable. The Sign naturally defaults to positive
      //     1 for positive, -1 for negative.
      // . remove sign character from val. 
      //      Note, before the function returns, the result is multiplied by the sign local variable to reflect the sign.
      // . error check for multiple sign characters
      // . error check to make sure sign character is at the head or tail of the string
      //              
      {  
         let positiveSignIndex = val.indexOf('+');
         let negativeSignIndex = val.indexOf('-');
         let nTailIndex = val.length-1;
         //
         // make sure both negative and positive signs are not in the string
         //
         if( (positiveSignIndex != -1) && (negativeSignIndex != -1) ) 
             return result;
         //
         // handle postive sign
         //
         if (positiveSignIndex != -1)
         {
            //
            // make sure there is only one sign character
            //
            if( (positiveSignIndex != val.lastIndexOf('+')) )
             return result;     
             //
             // make sure the sign is at the head or tail
             //
             if( (positiveSignIndex > 0) && (positiveSignIndex < nTailIndex )  )
                 return result;
             //
             // remove sign from string
             //
             val = val.replace("+","").trim();                 
         }    
         //
         // handle negative sign
         //
         if (negativeSignIndex != -1)
         {
            //
            // make sure there is only one sign character
            //
            if( (negativeSignIndex != val.lastIndexOf('-')) )
             return result;     
             //
             // make sure the sign is at the head or tail
             //
             if( (negativeSignIndex > 0) && (negativeSignIndex < nTailIndex )  )
                 return result;
             //
             // remove sign from string
             //
             val = val.replace("-","").trim();  
             sign = -1;                 
         }               
         //
         // make sure text length is greater than 0
         //       
         if(val.length == 0) 
            return result;                             
      }   
      //
      // convert string to a number
      //
      var r = +(<any>val);
      if( (r != null) && (!isNaN(r)) )
      {          
         result = r*sign;         
      }
      return(result);    
   }


0

टाइपस्क्रिप्ट को पता होना चाहिए कि हमारा var aईथर बनने जा रहा हैNumber || String

export type StringOrNumber = number | string;

export function toString (v: StringOrNumber) {
 return `${v}`;
}


export function toNumber (v: StringOrNumber) {
 return Number(v);
}

export function toggle (v: StringOrNumber) {
 return typeof v === "number" ? `${v}` : Number(v);
}

-1

आप हमेशा कास्ट विकल्प का उपयोग कर सकते हैं। सबसे पहले, आपको अपनी वस्तु को "अज्ञात" प्रकार में बदलना होगा और फिर इसे एक अपेक्षित ऑब्जेक्ट प्रकार में डालना होगा।

let subID:number = 0;

subID = <number><unknown> await obj_s1aSite.submissionTableFirstID.getText();

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

console.log(typeof <number><unknown>"1", typeof Number("1"))छप जाएगा string number
k0pernikus
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.