字符串数据类型的C#扩展方法

Jim*_*mbo 2 c# string extension-methods numbers

我的Web应用程序处理需要很多转换为数字的字符串 - 用户经常在这些字段中放入逗号,单位(如cm,m,g,kg)和货币符号,所以我想要做的是创建一个字符串扩展方法清除字段并将其转换为小数.

例如:

decimal myNumber = "15 cm".ToDecimal();
Run Code Online (Sandbox Code Playgroud)

Phi*_*Gan 7

您是否期望不同"文化"的用户使用您的应用程序?如果是这样,最好考虑用户的区域设置:

static decimal ToDecimal(this string str)
{
    return Decimal.Parse(str, CultureInfo.CurrentCulture);
}
Run Code Online (Sandbox Code Playgroud)

或者你可以替换str中不是数字或CultureInfo.CurrentCulture.NumberFormat.CurrencyDecimalSeparator值的每个字符,然后将其解析为小数.

编辑:
通常认为扩展方法应该有自己的命名空间.这将避免命名冲突并迫使最终用户有选择地导入他们需要的扩展.


dpu*_*ton 5

扩展方法具有以下形式:

public static class StringExtensions
{
    public static decimal ToDecimal(this string input)
    {
        //your conversion code here
    }
}
Run Code Online (Sandbox Code Playgroud)
  • 包含类必须是静态的.该方法也是静态注意"this"关键字.我建议按照它们引用的类型对扩展方法进行分组的约定,但不要求这样做.

这是编写扩展方法的指南.