在MVC4/Javascript中使用上标格式化小数的正则表达式
我正在尝试使用上标设置货币小数的格式,例如$1.08而不是$1.08。目前,我的模型货币变量(假设在MVC4/Javascript中使用上标格式化小数的正则表达式,javascript,regex,asp.net-mvc-4,razor,currency,Javascript,Regex,Asp.net Mvc 4,Razor,Currency,我正在尝试使用上标设置货币小数的格式,例如$1.08而不是$1.08。目前,我的模型货币变量(假设1.08value)使用模型模板和MVC4/Javascript显示为$1.08: [Range(0, 10000)] [DataType(DataType.Currency)] [DisplayFormat(DataFormatString = "{0:C}")] public decimal Price { get; set; } @{ @Html.Display(model =>
1.08
value)使用模型模板和MVC4/Javascript显示为$1.08
:
[Range(0, 10000)]
[DataType(DataType.Currency)]
[DisplayFormat(DataFormatString = "{0:C}")]
public decimal Price { get; set; }
@{
@Html.Display(model => model.Price)
}
相反,我尝试使用正则表达式提取小数并设置小数格式,但它仍然显示为$1.08
(p.S.货币本地化目前并不重要):
@{
var numRaw=模型价格;
var numSty=numRaw.ToString.Replace((?Per@AndrewB和@SimonMcKenzie,Regex.Replace())必须用于Razor才能工作。以下代码按预期显示$1.08:
@using System.Text.RegularExpressions
@Html.Raw("$"+Regex.Replace(Math.Round(Model.Price,2).ToString(), "(?<=\\.)([^.]*$)", "<sup>$1</sup>"));
@使用System.Text.RegularExpressions
@Html.Raw(“$”+Regex.Replace(Math.Round(Model.Price,2).ToString(),”)(?您的正则表达式前面不应该有/
。-AndrewB:我删除了开头的/
,并在Replace()之前添加了一个缺少的ToString()。对于“1.08 1.09 1.10”之类的字符串
,您是正确的,它只捕获最后一个术语中的小数,但在我的例子中,它不应该是一个问题,因为我直接从小数创建字符串。对于$1
,我认为$1
指的是第二个括号中的组,即([^.]*$)
因为第一组是以开头的?
。我不熟悉razor或asp.net,而且我不能很快找到文档,所以这可能是一个愚蠢的问题,但是“Replace”实际上处理正则表达式还是只处理字符串文本?如果你不知道,值得检查一下。绝对正确,@AndrewB!应该是regex.Replace(…)
-AndrewB,-Simon McKenzie:没错!需要使用Regex
。我有一个有效的解决方案。-AndrewB请发布一个答案,这样我就可以接受了。我会用有效的解决方案编辑我的问题。谢谢大家。
@using System.Text.RegularExpressions
@Html.Raw("$"+Regex.Replace(Math.Round(Model.Price,2).ToString(), "(?<=\\.)([^.]*$)", "<sup>$1</sup>"));