C# 项目扩展类(字符串格式化、数值转换等)
一些扩展类,实现数值格式化和字符串转换。
public static class MyExClass
{
static readonly string[] NumLetter =
{
"0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "A", "B", "C", "D", "E", "F", "G",
"H", "I", "J", "K", "L", "M", "N", "O", "P", "Q", "R", "S", "T", "U", "V", "W", "X", "Y", "Z", "#"
//, "a", "b", "c","d", "e", "f", "g", "h", "i", "j", "k", "l", "m", "n", "o", "p", "q", "r", "s", "t", "u", "v", "w", "x", "y","z"
};
/// <summary>
/// 获取下一个识别码
/// </summary>
/// <param name="c"></param>
/// <returns></returns>
public static string GetNextLetter(string c)
{
var x = Array.IndexOf(NumLetter, c) + 1;
if (x < NumLetter.Length - 1)
return NumLetter[x];
return "#";
}
#region TrimEx
/// <summary>
/// 替换字符串开头的空格、tab字符、换行符和新行(newline)
/// </summary>
/// <param name="val"></param>
/// <returns></returns>
public static string TrimStartEx(this string val)
{
return Regex.Replace(val, @"^\s+", "");
}
/// <summary>
/// 替换字符串结尾的空格、tab字符、换行符和新行(newline)
/// </summary>
/// <param name="val"></param>
/// <returns></returns>
public static string TrimEndEx(this string val)
{
return Regex.Replace(val, @"\s+$", "");
}
/// <summary>
/// 替换字符串开头和结尾的空格、tab字符、换行符和新行(newline)
/// </summary>
/// <param name="val"></param>
/// <returns></returns>
public static string TrimStartEndEx(this string val)
{
return val.TrimStartEx().TrimEndEx();
}
/// <summary>
/// 替换字符串中的空格、tab字符、换行符和新行(newline)
/// </summary>
/// <param name="val"></param>
/// <returns></returns>
public static string TrimEx(this string val)
{
return Regex.Replace(val, @"\s", "");
}
/// <summary>
/// 替换字符串中的换行符和新行(newline)
/// </summary>
/// <param name="val"></param>
/// <returns></returns>
public static string TrimExRN(this string val)
{
if (string.IsNullOrWhiteSpace(val))
return val;
return Regex.Replace(val, @"\r|\n", "");
}
#endregion
/// <summary>
/// 判断字符串是否符合a-zA-Z0-9开头,只包含a-zA-Z0-9-_
/// </summary>
/// <param name="val"></param>
/// <returns></returns>
public static bool TestCodeReg(this string val)
{
return Regex.Match(val, "^[a-zA-Z0-9]+[a-zA-Z0-9-_]*$").Success;
}
#region 数值格式化、金额格式化
/// <summary>
/// 字符串转HTML(换行)
/// </summary>
/// <param name="val"></param>
/// <returns></returns>
public static string ToHtml(this string val)
{
return val.Replace("\n", "<br />").Replace("\r", "<br />");
}
/// <summary>
/// 去除数值尾部多余的0
/// </summary>
/// <param name="val"></param>
/// <returns></returns>
public static decimal ToDecTrimEnd0(this decimal val)
{
string v = string.Format("{0:0.#########;;#}", val);
return v == "" ? 0M : v.ToDecimal();
}
/// <summary>
/// 日期格式化 yyyy-MM-dd
/// </summary>
/// <param name="dt">Datetime?</param>
/// <returns>string</returns>
static public string ToDateString(this DateTime? dt)
{
return dt.HasValue ? ((DateTime)dt).ToString("yyyy-MM-dd") : "";
}
/// <summary>
/// 日期格式化 yyyy-MM-dd
/// </summary>
/// <param name="dt">Datetime?</param>
/// <returns>string</returns>
static public string ToDateString(this DateTime dt)
{
return dt.ToString("yyyy-MM-dd");
}
/// <summary>
/// 日期格式化 yyyy-MM-dd
/// </summary>
/// <param name="dt">string</param>
/// <returns>string</returns>
static public string ToDateString(this string val)
{
try
{
DateTime dt = DateTime.Parse(val);
return dt.ToString("yyyy-MM-dd");
}
catch(Exception ex)
{
return val;
}
}
/// <summary>
/// 日期格式化 yyyy-MM-dd
/// </summary>
/// <param name="dt">string</param>
/// <returns>string</returns>
static public string ToDateString(this object val)
{
try
{
var s = val == null ? "" : val.ToString();
DateTime dt = DateTime.Parse(s);
return dt.ToString("yyyy-MM-dd");
}
catch (Exception ex)
{
return "";
}
}
/// <summary>
/// 金额取整
/// </summary>
/// <param name="val">decimal?</param>
/// <returns>string</returns>
static public string ToAmtString(this decimal? val)
{
if (val.HasValue)
return Math.Round((decimal)val).ToString();
else
return "";
}
/// <summary>
/// 金额格式化
/// </summary>
/// <param name="val">string</param>
/// <param name="i">精度</param>
/// <returns>string</returns>
static public string ToAmtString(this decimal? val, int i)
{
if (val.HasValue)
return Math.Round((decimal)val, i).ToString();
else
return "";
}
/// <summary>
/// 金额格式化
/// </summary>
/// <param name="val">string</param>
/// <param name="i">精度</param>
/// <returns>string</returns>
static public string ToAmtString(this decimal val, int i)
{
return Math.Round((decimal)val, i).ToString();
}
/// <summary>
/// 字符串金额取整
/// </summary>
/// <param name="val">string</param>
/// <returns>string</returns>
static public string ToAmtString(this string val)
{
return StrToAmtString(val, 0);
}
/// <summary>
/// 字符串金额取2位精度
/// </summary>
/// <param name="val">string</param>
/// <returns>string</returns>
static public string ToAmtString2(this string val)
{
return StrToAmtString(val, 2);
}
/// <summary>
/// 字符串金额取3位精度
/// </summary>
/// <param name="val">string</param>
/// <returns>string</returns>
static public string ToAmtString3(this string val)
{
return StrToAmtString(val, 3);
}
/// <summary>
/// 字符串金额取4位精度
/// </summary>
/// <param name="val">string</param>
/// <returns>string</returns>
static public string ToAmtString4(this string val)
{
return StrToAmtString(val, 4);
}
/// <summary>
/// 金额精度格式化
/// </summary>
/// <param name="val">string</param>
/// <param name="i">int32</param>
/// <returns>string</returns>
static public string StrToAmtString(string val, Int32 i)
{
try
{
if (val == "")
return "";
decimal dval = decimal.Parse(val);
if (dval == 0m)
return "";
dval = Math.Round(dval, i);
return dval.ToString();
}
catch (Exception ex)
{
return val;
}
}
/// <summary>
/// object转金额
/// </summary>
/// <param name="val"></param>
/// <returns></returns>
static public decimal ToDecimal(this object val)
{
decimal d;
if (val == null) return 0M;
return decimal.TryParse(val.ToString().Trim(), out d) ? d : 0M;
}
/// <summary>
/// object转金额
/// </summary>
/// <param name="val">object</param>
/// <param name="x">精度</param>
/// <returns></returns>
static public decimal ToDecimal(this object val,int x)
{
decimal d = val.ToDecimal();
//d= decimal.TryParse(val.ToString().Trim(), out d) ? d : 0M;
return Math.Round(d, x);
}
/// <summary>
/// 字符串转金额
/// </summary>
/// <param name="val"></param>
/// <returns></returns>
static public decimal ToDecimal(this string val)
{
decimal d;
if (decimal.TryParse(val, out d))
return d;
else
return 0M;
}
/// <summary>
/// 字符串转金额
/// </summary>
/// <param name="val"></param>
/// <returns></returns>
static public decimal? ToDecimalOrNull(this string val)
{
decimal d;
if (decimal.TryParse(val, out d))
return d;
else
return null;
}
/// <summary>
/// 字符串转金额
/// </summary>
/// <param name="val"></param>
/// <returns></returns>
static public decimal ToDecimal(this string val,int i)
{
decimal d;
if (decimal.TryParse(val, out d))
{
d = Math.Round(d, i);
return d;
}
else
return 0M;
}
/// <summary>
/// 字符转整数
/// </summary>
/// <param name="val"></param>
/// <returns></returns>
static public int ToInt(this string val)
{
int i = 0;
if (!string.IsNullOrWhiteSpace(val))
int.TryParse(val, out i);
return i;
}
/// <summary>
/// object转Int
/// </summary>
/// <param name="val"></param>
/// <returns></returns>
public static int ToInt(this object val)
{
if (val == null)
return 0;
string v = val.ToString().Trim();
int i;
int.TryParse(v, out i);
return i;
}
#endregion
#region 全角半角转换
/// <summary>
/// 转全角的函数(SBC case)
/// </summary>
/// <param name="input">任意字符串</param>
/// <returns>全角字符串</returns>
///<remarks>
///全角空格为12288,半角空格为32
///其他字符半角(33-126)与全角(65281-65374)的对应关系是:均相差65248
///</remarks>
public static string ToSbc(this string input)
{
//半角转全角:
char[] c = input.ToCharArray();
for (int i = 0; i < c.Length; i++)
{
if (c[i] == 32)
{
c[i] = (char)12288;
continue;
}
if (c[i] < 127)
c[i] = (char)(c[i] + 65248);
}
return new string(c);
}
/// <summary> 转半角的函数(DBC case) </summary>
/// <param name="input">任意字符串</param>
/// <returns>半角字符串</returns>
///<remarks>
///全角空格为12288,半角空格为32
///其他字符半角(33-126)与全角(65281-65374)的对应关系是:均相差65248
///</remarks>
public static string ToDbc(this string input)
{
char[] c = input.ToCharArray();
for (int i = 0; i < c.Length; i++)
{
if (c[i] == 12288)
{
c[i] = (char)32;
continue;
}
if (c[i] > 65280 && c[i] < 65375)
c[i] = (char)(c[i] - 65248);
}
return new string(c);
}
#endregion
#region 燃气系统判断是否门店、气库
/// <summary>
/// 是否门店
/// </summary>
/// <param name="val"></param>
/// <returns></returns>
public static bool IsSalesRoom(this string val)
{
var r = Config.GetValue("RSalesRoom");
return Regex.Match(val, r).Success;
}
/// <summary>
/// 是否气库
/// </summary>
/// <param name="val"></param>
/// <returns></returns>
public static bool IsGasStation(this string val)
{
var r = Config.GetValue("RGasStation");
return Regex.Match(val, r).Success;
}
/// <summary>
/// 是否座席
/// </summary>
/// <param name="val"></param>
/// <returns></returns>
public static bool IsAgent(this string val)
{
var r = Config.GetValue("RAgent");
return Regex.Match(val, r).Success;
}
/// <summary>
/// 是否片区负责人
/// </summary>
/// <param name="val"></param>
/// <returns></returns>
public static bool IsAreaManager(this string val)
{
var r = Config.GetValue("RAreaManager");
return Regex.Match(val, r).Success;
}
#endregion
}
浙公网安备 33010602011771号