ASP.Net - 如何在PT-BR文化中大写第一封字母结果?

时间:2009-09-06 22:30:01

标签: asp.net

我正在使用:<%# Eval("DataCadastro", "{0:MMMM / yyyy}")%>,结果是:

  

“março/ 2008”

我希望它是:

  

“Março/ 2008”

知道怎么做吗?

3 个答案:

答案 0 :(得分:2)

你有选择:

  1. 预先烹饪数据,使其始终与预期格式匹配

  2. 向代码隐藏(例如,FormatDataCadastro)添加一个方法,该方法将获取字段值并将其转换为预期的格式。您可以从ASPX调用它,前提是它的可访问性(我认为该方法可能需要公开才能执行此操作)。

  3. 在ASPX文件中进行转换。我不相信有一个格式字符串说明符可以自然地处理这种情况。您将需要获取第一个字符,大小写它,然后针对field.Substring(1)调用Eval语句(即字符串的其余部分)。

答案 1 :(得分:0)

如果有人需要......它就这样解决了:

protected void BoletinsListView_ItemDataBound(object sender, ListViewItemEventArgs e)
{
    if (e.Item.ItemType == ListViewItemType.DataItem)
    {
        HyperLink docPdf = (HyperLink)e.Item.FindControl("ArquivoHyperLink");
          docPdf.Text = ConvertToTitleCase(docPdf.Text);
    }
}


public static String ConvertToTitleCase(String strParam)
{
    String strTitle = strParam;

    if (strParam.Length > 0)
    {
        strTitle = strParam.Substring(0, 1).ToUpper();
        strParam = strParam.Substring(1).ToLower();
        String strPrev = "";

        for (int iIndex = 0; iIndex < strParam.Length; iIndex++)
        {
            if (iIndex > 1)
            {
                strPrev = strParam.Substring(iIndex - 1, 1);
            }
            if (strPrev.Equals(" ") ||
                strPrev.Equals("\t") ||
                strPrev.Equals("\n") ||
                strPrev.Equals("."))
            {
                strTitle += strParam.Substring(iIndex, 1).ToUpper();
            }
            else
            {
                strTitle += strParam.Substring(iIndex, 1);
            }
        }
    }
    return strTitle;

}

答案 2 :(得分:0)

使用ToTitleCase方法。

var culture = CultureInfo.GetCultureInfo("pt-br");
var date = new DateTime(2008, 3, 1);
var dateString = date.ToString("MMMM / yyyy", culture);
var titleCased = culture.TextInfo.ToTitleCase(dateString);