我们如何自动在SPFx反应流利的文本字段中键入数字添加逗号例如:1,000,000,000

问题描述

<div>
<TextField
value={this.state.Budget}
onChanged={this.onChangeBudget}
/>
</div> 

public onChangeBudget = (value: string) => 
{
console.log("Budget : " + value);
console.log(value.replace(/\B(?=(\d{3})+(?!\d))/g,','));
let abc = value.replace(/\B(?=(\d{3})+(?!\d))/g,');
return this.setState({ Budget: abc });
}

所以问题是当我记录其显示正确的值时 result(1,111,111)但当我为相同的状态做setState时 像这样显示(1,1,111)。请建议我在哪里 出问题了。

要求的输出是-1,000 10,000 100,000 1,000,000 100,0000,000

解决方法

有关如何在currnet语言环境(在调试窗口中看到的内容)中用千位分隔符打印数字的正确答案,请参见链接的问题。与SPFx相关,您可以从上下文中获取语言环境。可能看起来像这样(假设Web部件的上下文):

const culture = this.context.pageContext.cultureInfo.currentCultureName;
const value.toLocaleString(culture)

如果您不希望支持多种语言,那么简单的value.toLocaleString()就足够了。