【问题标题】:Convert German locale number format (0,01) to english locale format (0.01) in angular 8将德语语言环境数字格式(0,01)转换为角度 8 中的英语语言环境格式(0.01)
【发布时间】:2020-10-16 14:45:14
【问题描述】:

我的应用程序接受不同的语言。我有用户首选的德语,并使用 registerLocale 进行了注册。我能够将 DB 十进制值 - 0.001(en-fromat)转换为 0,001(de 格式)

但是现在,当用户以他们的区域格式输入任何数字/小数时,我需要将其从 0,001(de 格式)更改为 0.001(en 格式),以便将正确的数据存储在数据库中。

我已尝试关注 -

    console.log(this.value.toLocaleString('de-DE')); -- doesnt work
    console.log(new Intl.NumberFormat('de-DE').format(this.value)); --give NaN
    new Intl.NumberFormat(locale, {minimumFractionDigits: 5}).format(Number(value)); - gives NaN
    console.log('formatNumber-' + this.LocalNumberPipe.transform(value)); -- give NaN

我不明白如何解决这个问题。有没有通用的方法。我正在寻找一种方法来帮助我将任何语言环境转换为 EN-US,因为德国语言环境就是这样一个例子。

我的 localNumberPipe 是

@Pipe({
    name: 'localNumber',
})
export class LocalNumberPipe implements PipeTransform {

    constructor(private session: SessionService) { }

    transform(value: any, format?: string) {
        if (value == null) { return ''; } // !value would also react to zeros.
        if (!format) { format = '.2-2'; }

        return formatNumber(value, this.session.locale, format);
    }
}

请问有没有人知道我该如何解决这个问题。

【问题讨论】:

    标签: angular typescript internationalization locale


    【解决方案1】:

    您可以简单地将 , 更改为 .然后将其解析为浮动:

    this.value.replace(",", "."); // to reaplace ',' with '.'
    let result = parseFloat(this.value); 
    

    【讨论】:

    • 我不认为这适用于所有情况。因为我的输入类型是支持逗号的文本。如果我得到像 - 1,200.50 (input in german format) it will give me 1 but it should give 1.20050 in english format 这样的输入
    • 那么你应该在替换 if(!isNaN(parseFloat(this.value))) 之后添加测试,或者你只需​​控制输入就像你想要的那样
    • 我在 stackoverflow 上找到了这个,它工作正常。 stackoverflow.com/questions/29255843/…
    • 是的,我正在努力使用正则表达式创建和处理它,但这非常困难,因为我们的系统支持 1000 个语言环境。所以我想上面评论中的链接应该可以工作。请参考第二个答案。
    • 我在 stackBlitz 中使用 mat-form-field 创建 Angular 应用程序,当你去 [这里] 时验证输入:(stackblitz.com/edit/angular-9-material-starter-6ageyk?file=src/…)
    猜你喜欢
    • 1970-01-01
    • 2014-03-09
    • 2015-03-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-08-10
    • 1970-01-01
    • 2013-07-23
    相关资源
    最近更新 更多