2014-09-03 5 views
24

अगर मैं कार्य करें:मैं लोकेल के अनुसार स्ट्रिंग टू नंबर को कैसे परिवर्तित करूं (.toLocaleString के विपरीत)?

var number = 3500; 
alert(number.toLocaleString("hi-IN")); 

मैं हिंदी में ३,५०० मिल जाएगा।

लेकिन मैं इसे 3500 पर कैसे परिवर्तित कर सकता हूं। मैं की तरह कुछ हैं:

var str='३,५००'; 
alert(str.toLocaleNumber("en-US")); 

तो, कि यह 3500 दे सकते हैं।

क्या यह जावास्क्रिप्ट, jquery या किसी अन्य मुफ्त पुस्तकालय द्वारा संभव है?

+0

'en-US' के प्रारूप में 3500 का परिणाम हो सकता है 3,500 – reporter

+2

खैर संख्या सिर्फ संख्या हैं, इसलिए कोई 'एन-यूएस' नंबर नहीं है। असली सवाल यह है कि एक अलग लोकेल से स्ट्रिंग को कैसे पार्स किया जाए। तो 'parseIntFromLocale' की तरह कुछ। वहां बहुत सारे फॉर्मेटिंग और पार्सिंग लाइब्रेरी हैं, मुझे यकीन है कि किसी को हिंदी का समर्थन करना होगा।मुझे नहीं लगता कि इसके लिए जावास्क्रिप्ट में मूल कुछ भी है। –

+0

यह हजारों और दशमलव विभाजकों का ख्याल नहीं रखता है, लेकिन एक नजर डालें [जावास्क्रिप्ट हिंदी/अरबी संख्याओं को वास्तविक संख्यात्मक चर में परिवर्तित नहीं कर सकता] [http://stackoverflow.com/q/17024985/1048572) – Bergi

उत्तर

1

दुर्भाग्यवश आपको स्थानीयकरण को मैन्युअल रूप से निपटाना होगा।

function parseHindi(str) { 
    return Number(str.replace(/[०१२३४५६७८९]/g, function (d) { 
     return d.charCodeAt(0) - 2406; 
    }).replace(/[०१२३४५६७८९]/g, function (d) { 
     return d.charCodeAt(0) - 2415; 
    })); 
} 

alert(parseHindi("३५००")); 

यहाँ फिडल: this answer से प्रेरित होकर, मैं एक समारोह है कि मैन्युअल रूप से हिंदी संख्या का स्थान ले लेगा बनाया http://jsfiddle.net/yyxgxav4/

+0

के लिए मदद नहीं की है बहुत बहुत धन्यवाद। लेकिन मैं ऐसी परिस्थिति में हूं जहां मुझे अंग्रेजी में किसी भी भाषा में संख्याएं परिवर्तित करनी होंगी क्योंकि मेरे आवेदन को सभी संभावित संस्कृतियों का समर्थन करना है। – user2754545

+1

आपको एक समय में गैर-लैटिन वर्णों वाली भाषाओं के लिए एक करना होगा। मैंने कई स्थानीय परियोजनाओं पर काम किया है और दुर्भाग्य से "सार्वभौमिक अनुवादक" जैसी कोई चीज़ नहीं है। – denisol

1

आप इस बाहर की कोशिश कर सकते

function ConvertDigits(input, source, target) { 
var systems = { 
    arabic: 48, english: 48, tamil: 3046, kannada: 3302, telugu: 3174, hindi: 2406, 
    malayalam: 3430, oriya: 2918, gurmukhi: 2662, nagari: 2534, gujarati: 2790, 
}, 
output = [], offset = 0, zero = 0, nine = 0, char = 0; 
source = source.toLowerCase(); 
target = target.toLowerCase(); 

if (!(source in systems && target in systems) || input == null || typeof input == "undefined" || typeof input == "object") { 
    return input; 
} 

input = input.toString(); 
offset = systems[target] - systems[source]; 
zero = systems[source]; 
nine = systems[source] + 9;  
for (var i = 0 ; i < input.length; i++) { 
    var char = input.charCodeAt(i); 
    if (char >= zero && char <= nine) { 
     output.push(String.fromCharCode(char + offset)); 
    } else { 
     output.push(input[i]); 
    } 
} 
return output.join(""); 

}

var res = ConvertDigits ('12345678 9', 'hindi', 'english');

मैं इसे here से मिला आप एक jQuery बात की जरूरत है तो कृपया try this link

+0

मुझे नहीं लगता कि यह हजारों या लाख/करोड़ विभाजक करने के लिए विभिन्न लोकेल निर्भर तरीकों को संभालता है, जो विभिन्न अंकों के पात्रों के मुकाबले 'toLocaleString' परिणामों में अधिक आम है। – hippietrail

4

मुझे लगता है कि आप की तरह कुछ के लिए देख रहे हैं:

https://github.com/jquery/globalize

लिंक से ऊपर ले git करने के लिए होगा प्रोजेक्ट पेज यह माइक्रोसॉफ्ट द्वारा योगदान जेएस लाइब्रेरी है। आपको इसे एक कोशिश देना चाहिए और उस प्लगइन की फ़ॉर्मेट विधि का उपयोग करने का प्रयास करना चाहिए।

http://weblogs.asp.net/scottgu/jquery-globalization-plugin-from-microsoft

मुझे आशा है कि यह आपके लिए क्या देख रहे हैं और जल्द ही आपकी समस्या का समाधान होगा: आप इस प्लगइन का अध्ययन करना चाहते हैं, तो यहाँ उसी के लिए कड़ी है। अगर यह काम नहीं करता है, तो मुझे बताएं।

+0

वैश्वीकरण महान है और ऐसा करने का सबसे अच्छा तरीका है। देखें [उदाहरण का उपयोग यहां] (https://stackoverflow.com/a/38822356/675721) –

1

Globalize library का उपयोग करें।

स्थापित यह

npm install globalize cldr-data --save

तो

var cldr = require("cldr-data"); 
var Globalize = require("globalize"); 

Globalize.load(cldr("supplemental/likelySubtags")); 
Globalize.load(cldr("supplemental/numberingSystems")); 
Globalize.load(cldr("supplemental/currencyData")); 

//replace 'hi' with appropriate language tag 
Globalize.load(cldr("main/hi/numbers")); 
Globalize.load(cldr("main/hi/currencies")); 

//You may replace the above locale-specific loads with the following line, 
// which will load every type of CLDR language data for every available locale 
// and may consume several hundred megs of memory! 
//Use with caution. 
//Globalize.load(cldr.all()); 

//Set the locale 
//We use the extention u-nu-native to indicate that Devanagari and 
// not Latin numerals should be used. 
// '-u' means extension 
// '-nu' means number 
// '-native' means use native script 
//Without -u-nu-native this example will not work 
//See 
// https://en.wikipedia.org/wiki/IETF_language_tag#Extension_U_.28Unicode_Locale.29 
// for more details on the U language code extension 
var hindiGlobalizer = Globalize('hi-IN-u-nu-native'); 

var parseHindiNumber = hindiGlobalizer.numberParser(); 
var formatHindiNumber = hindiGlobalizer.numberFormatter(); 
var formatRupeeCurrency = hindiGlobalizer.currencyFormatter("INR"); 

console.log(parseHindiNumber('३,५००')); //3500 
console.log(formatHindiNumber(3500)); //३,५०० 
console.log(formatRupeeCurrency(3500)); //₹३,५००.०० 

https://github.com/codebling/globalize-example

संबंधित मुद्दे