在MVC4/Javascript中使用上标格式化小数的正则表达式

在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而不是$1.08。目前,我的模型货币变量(假设
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>"));