剃刀 - 如何获得字符串的n个字符?

时间:2014-03-16 21:22:50

标签: c# asp.net asp.net-mvc asp.net-mvc-4 razor

我有一个带有以下

的asp.net mvc 4应用程序

模型

public string Price {get;set;}

它在数据库中保存一个字符串,例如。 " 41.99"

查看

@foreach(var item in Model)
{
   <div class="price">@item.Price</div>
}

它返回值&#34; 41.99&#34;一切都很好。

但是我想以不同的方式选择值。

以下是我需要的Html输出

@foreach(var item in Model)
{
    <div class="price">
    <span class="dollar">41</span>
    <span class="cents">99</span>
</div>
}
  • 请注意,该值分为2个部分,并且省略了该点。
  • 该字符串将作为货币插入输入字段,因此需要插入&#34; 41.99&#34;
  • 其他考虑因素是如果点前的值是1,11,111,1111个字符,则需要显示所有数字。

那么我该如何归档呢?

@foreach(var item in Model)
{
 <div class="price">
     <span class="dollar">@item.Price(first part)</span>
     <span class="cents">@item.Price(second part)</span>
 </div>
}

任何帮助或指导都会受到赞赏。

3 个答案:

答案 0 :(得分:4)

如果您的数据是字符串,那么

var price = "41.99";
var parts = price.Split('.');
var dollar = parts[0];
var cents = parts[1];

如果您的数据是小数

decimal price = 41.99m;
var dollar = (int)price;
var cents = (int)((price % 1) * 100);

答案 1 :(得分:1)

撇开这样的事实,你不应该使用字符串来表示数值,而是使用decimal代替货币价值......以及.不是唯一的分隔符(取决于区域设置)这一事实...

String.Split是在分隔符上拆分字符串的最简单方法:

var parts = item.Price.Split(`.`);

现在你有parts[0]的“美元”值,需要处理可能存在或不存在的小数部分。请注意,如果您需要cents而不仅仅是04

,则可能需要填充4
  @{ 
     var parts = @item.Price.Split('.');
     var cents = (parts.Length == 2) ? cents = parts[1] : "0";
  }
  <span class="dollar">@parts[0]</span>
  <span class="cents">@cents</span>

答案 2 :(得分:0)

感谢所有回复

我想出了这里的答案和一些建议。

这是我的问题的答案: 型号:

public double Price { get; set; }

控制器:

public ActionResult Details(int id)
{
var data = _Context.Products.Where(d => d.ProductId == id).First();

if (data == null)
{
return HttpNotFound();
}
return View(data);
}

在视图中:

string s = Model.Price.ToString("0.00", System.Globalization.CultureInfo.InvariantCulture);
string[] parts = s.Split('.');
int i1 = int.Parse(parts[0]);
int i2 = int.Parse(parts[1]);

<span>@i1</span>
<span class="decimal">@i2</span>

像魅力一样工作

非常感谢