当前位置: 首页 > 知识库问答 >
问题:

如何根据区域设置将字符串转换为数字(与.toLocaleString相反)?

宋臻
2023-03-14

如果我这样做:

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

我将获得३,५०० 印地语。

但如何将其转换回3500。我想要像这样的东西:

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

因此,它可以给出3500

javascript、jquery或任何其他免费库是否可以实现这一点?


共有3个答案

秦才
2023-03-14

使用全球化库。

安装它

npm安装全球化cldr数据--保存

然后

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

陆城
2023-03-14

不幸的是,您必须手动解决本地化问题。受这个答案的启发,我创建了一个函数,可以手动替换印地语数字:

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("३५००"));

在这里拉小提琴:http://jsfiddle.net/yyxgxav4/

龚威
2023-03-14

我想你正在寻找这样的东西:

https://github.com/jquery/globalize

上面的链接将带您进入git项目页面。这是一个由微软提供的js库。您应该尝试一下,并尝试使用该插件的formt方法。如果你想研究这个插件,这里有相同的链接:

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

我希望这是你正在寻找的,并将很快解决你的问题。如果不行,请告诉我。

 类似资料:
  • 问题内容: 我正在阅读有关python的新f字符串的 博客 ,它们看起来很整洁。但是,我希望能够从字符串或文件中加载f字符串。 我似乎找不到任何执行此操作的字符串方法或其他函数。 从上面我的链接中的示例: 但是,如果我有琴弦怎么办?我希望能够像这样: 事实证明,我已经可以执行类似的操作并获得性能提高。即: 问题答案: f字符串是代码。不仅以安全的方式(当然,字符串文字就是代码),而且以危险的任意代

  • 问题内容: 我有一个,我需要一个。如何从一个转换为另一个? 问题答案: 好问题。我有以下五种 6种方法可以做到这一点。 注意:返回。因此有效地两者是相同的。 调用,这又设置了数组。 另一方面,调用以下程序包私有构造函数。 从源代码中的Java 8的源代码 因此似乎是最有效的方法,在这两个存储器和速度方面,用于转换char到String。

  • 我有一些日期格式的字符串,例如 我使用SimpleDateForate并尝试将String类型转换为Date类型。它将String类型转换为Date类型,但是Java无法识别时区“MYT”,而是将其设置为计算机的默认时区,即“CST”。我需要在Date对象中记录时区。我该怎么做?

  • 如何将“4,250,000.40”转换为4,250,000.40,即通过保留逗号和点将字符串转换为数字?使用JavaScript

  • 我得到一个错误读数:

  • 问题内容: 我一直在尝试使用 GZIPOutputStream 等,但在理解它们方面没有成功。我要做的就是将字符串- “字符串” 转换为GZIP Base64格式。我怎样才能做到这一点? 编辑: 通过GZIP Base64格式,我的意思是字符串首先使用GZIP压缩,然后转换为Base64 问题答案: 使用Apache Commons Codec 。 这是一个示例类: 哪个输出: 在Linux下,您