分享一下 常用的转换方法(例如:数字转金钱,文本与html互转等)
public sealed class SAFCFormater
{
/// <summary>
/// 文本格式到HTML
/// </summary>
/// <param name="src">源字符</param>
/// <returns>返回安全转换后字符</returns>
public static string TextToHtml_Ex(string src)
{
StringBuilder str = new StringBuilder(HttpUtility.HtmlDecode(src.ToString().Trim()));
str.Replace("<", "<");
str.Replace(">", ">");
str.Replace("\r\n", "<br />");
str.Replace("\"", """);
str.Replace("\'", "´");
str.Replace("\0", " ");
return str.ToString();
}
/// <summary>
/// HTML到文本格式
/// </summary>
/// <param name="src">源字符</param>
/// <returns>返回安全转换后字符</returns>
public static string HtmlToText_Ex(string src)
{
StringBuilder str = new StringBuilder(HttpUtility.HtmlDecode(src.ToString().Trim()));
str.Replace("<br />", "\r\n");
str.Replace(""", "\"");
str.Replace("´", "\'");
str.Replace(" ", "\0");
return str.ToString();
}
#region 金额大写转换
public static string ToUpper(string currencyDigits)
{
var isZero = "";
//验证接收的字符串是否金额.wait for add
if (currencyDigits.Substring(0, 1) == "-")
{
isZero = "负";
currencyDigits = currencyDigits.Substring(1, currencyDigits.Length - 1);
}
var CN_ZERO = "零";
var CN_ONE = "壹";
var CN_TWO = "贰";
var CN_THREE = "叁";
var CN_FOUR = "肆";
var CN_FIVE = "伍";
var CN_SIX = "陆";
var CN_SEVEN = "柒";
var CN_EIGHT = "捌";
var CN_NINE = "玖";
var CN_TEN = "拾";
var CN_HUNDRED = "佰";
var CN_THOUSAND = "仟";
var CN_TEN_THOUSAND = "万";
var CN_HUNDRED_MILLION = "亿";
var CN_TEN_THOUSAND_BILLION = "兆";//金额上的兆亿=万亿
var CN_DOLLAR = "元";
var CN_TEN_CENT = "角";
var CN_CENT = "分";
var CN_LI = "厘";
var CN_INTEGER = "整";
string integralPart = "";//整数部分
string decimalPart = "";//小数部分
var parts = currencyDigits.Split('.');
if (parts.Length > 1)
{
integralPart = parts[0];
decimalPart = parts[1];
decimalPart = decimalPart.Length > 3 ? decimalPart.Substring(0, 3) : decimalPart;
}
else
{
integralPart = parts[0];
decimalPart = "";
}
var digits = new string[] { CN_ZERO, CN_ONE, CN_TWO, CN_THREE, CN_FOUR, CN_FIVE, CN_SIX, CN_SEVEN, CN_EIGHT, CN_NINE };
var radices = new string[] { "", CN_TEN, CN_HUNDRED, CN_THOUSAND };//拾佰仟
var bigRadices = new string[] { "", CN_TEN_THOUSAND, CN_HUNDRED_MILLION, CN_TEN_THOUSAND_BILLION };//万亿兆
var decimals = new string[] { CN_TEN_CENT, CN_CENT, CN_LI };//角分
var outputCharacters = "";//输出大写字符串
if (Convert.ToInt64(integralPart) > 0)
{
var zeroCount = 0;
for (var i = 0; i < integralPart.Length; i++)
{
var p = integralPart.Length - i - 1;
var d = integralPart.Substring(i, 1);
var quotient = p / 4;
var modulus = p % 4;
if (d == "0")
{
zeroCount++;
}
else
{
if (zeroCount > 0)
{
outputCharacters += digits[0];
}
zeroCount = 0;
outputCharacters += digits[Convert.ToInt32(d)] + radices[modulus];
}
if (modulus == 0 && zeroCount < 4)
{
outputCharacters += bigRadices[quotient];
}
}
outputCharacters += CN_DOLLAR;
}
if (decimalPart != "")
{
for (var i = 0; i < decimalPart.Length; i++)
{
var d = decimalPart.Substring(i, 1);
if (d != "0")
{
outputCharacters += digits[Convert.ToInt32(d)] + decimals[i];
}
}
}
if (outputCharacters == "")
{
outputCharacters = CN_ZERO + CN_DOLLAR;
}
if (decimalPart == "" || int.Parse(decimalPart.PadRight(3, '0').Substring(1, decimalPart.PadRight(3, '0').Length - 1)) == 0)
{
outputCharacters += CN_INTEGER;
}
return isZero + outputCharacters;
}
#endregion
#region 金额大写转换
private static readonly String[] m_Number = { "零", "壹", "贰", "叁", "肆", "伍", "陆", "柒", "捌", "玖" };
private static readonly String[] m_Unit = { "分", "角", "元", "拾", "佰", "仟", "万", "拾", "佰仟亿", "拾佰仟兆拾佰仟" };
public static String ToUpperOld(String MoneyString)
{
if (IsNumeric(MoneyString) == false) return "";
decimal num = Convert.ToDecimal(MoneyString);
string str1 = "零壹贰叁肆伍陆柒捌玖"; //0-9所对应的汉字
string str2 = "万仟佰拾亿仟佰拾万仟佰拾元角分"; //数字位所对应的汉字
string str3 = ""; //从原num值中取出的值
string str4 = ""; //数字的字符串形式
string str5 = ""; //人民币大写金额形式
int j; //num的值乘以100的字符串长度
string ch1 = ""; //数字的汉语读法
string ch2 = ""; //数字位的汉字读法
int nzero = 0; //用来计算连续的零值是几个
int temp; //从原num值中取出的值
num = Math.Round(Math.Abs(num), 2); //将num取绝对值并四舍五入取2位小数
str4 = ((long)(num * 100)).ToString(); //将num乘100并转换成字符串形式
j = str4.Length; //找出最高位
if (j > 15)
{
return "溢出";
}
str2 = str2.Substring(15 - j); //取出对应位数的str2的值。如:200.55,j为5所以str2=佰拾元角分
//循环取出每一位需要转换的值
for (int i = 0; i < j; i++)
{
str3 = str4.Substring(i, 1); //取出需转换的某一位的值
temp = Convert.ToInt32(str3); //转换为数字
if (i != (j - 3) && i != (j - 7) && i != (j - 11) && i != (j - 15))
{
//当所取位数不为元、万、亿、万亿上的数字时
if (str3 == "0")
{
ch1 = "";
ch2 = "";
nzero = nzero + 1;
}
else
{
if (str3 != "0" && nzero != 0)
{
ch1 = "零" + str1.Substring(temp * 1, 1);
ch2 = str2.Substring(i, 1);
nzero = 0;
}
else
{
ch1 = str1.Substring(temp * 1, 1);
ch2 = str2.Substring(i, 1);
nzero = 0;
}
}
}
else
{
//该位是万亿,亿,万,元位等关键位
if (str3 != "0" && nzero != 0)
{
ch1 = "零" + str1.Substring(temp * 1, 1);
ch2 = str2.Substring(i, 1);
nzero = 0;
}
else
{
if (str3 != "0" && nzero == 0)
{
ch1 = str1.Substring(temp * 1, 1);
ch2 = str2.Substring(i, 1);
nzero = 0;
}
else
{
if (str3 == "0" && nzero >= 3)
{
ch1 = "";
ch2 = "";
nzero = nzero + 1;
}
else
{
if (j >= 11)
{
ch1 = "";
nzero = nzero + 1;
}
else
{
ch1 = "";
ch2 = str2.Substring(i, 1);
nzero = nzero + 1;
}
}
}
}
}
if (i == (j - 11) || i == (j - 3))
{
//如果该位是亿位或元位,则必须写上
ch2 = str2.Substring(i, 1);
}
str5 = str5 + ch1 + ch2;
if (i == j - 1 && str3 == "0")
{
//最后一位(分)为0时,加上“整”
str5 = str5 + '整';
}
}
if (num == 0)
{
str5 = "零元整";
}
return str5;
}
#endregion
#region 判断是否为数字
public static bool IsNumeric(string i_value)
{
try
{
Regex t_regex = new System.Text.RegularExpressions.Regex("^(-?[0-9]*[.]*[0-9]{0,12})$");
if (t_regex.IsMatch(i_value)) return true;
else return false;
}
catch (Exception)
{
return false;
}
}
#endregion
#region 格式化成金额格式输出
/// <summary>
///
/// </summary>
/// <param name="i_Value">需要格式化的数值</param>
/// <param name="i_Show_Flag">是否显示金额符号</param>
/// <returns></returns>
public static string FormateToMoney(string i_Value, bool i_Show_Flag)
{
double i_temp_value = 0;
if (i_Value == "") return "";
if (IsNumeric(i_Value) == false) return "";
try
{
NumberFormatInfo t_nfi = new CultureInfo("zh-CN", false).NumberFormat;
t_nfi.CurrencySymbol = "";
i_temp_value = Double.Parse(i_Value);
i_temp_value = Math.Round(i_temp_value, 2);
if (i_Show_Flag == true)//显示前面的金额符号
{
return "¥" + i_temp_value.ToString("C2", t_nfi);
}
else
{
return i_temp_value.ToString("C2", t_nfi);
}
}
catch (Exception ex)
{
if (i_Show_Flag == true)//显示前面的金额符号
{
return "¥0.00";
}
else
{
return "0.00";
}
}
}
/// <summary>
/// 数字转化为会计金额(负值为红色)
/// </summary>
/// <param name="i_Value"></param>
/// <param name="i_Show_Flag"></param>
/// <returns></returns>
public static string FormateToAccountMoney(string i_Value, bool i_Show_Flag)
{
double i_temp_value = 0;
bool ifnegative = false;
if (i_Value == "") return "";
if (IsNumeric(i_Value) == false) return "";
try
{
NumberFormatInfo t_nfi = new CultureInfo("zh-CN", false).NumberFormat;
t_nfi.CurrencySymbol = "";
i_temp_value = Double.Parse(i_Value);
ifnegative = i_temp_value < 0 ? true : false;
i_temp_value = Math.Abs(Math.Round(i_temp_value, 2));
if (i_Show_Flag == true)//显示前面的金额符号
{
if (ifnegative)
return "<font color='red'>¥" + i_temp_value.ToString("C2", t_nfi) + "</font>";
else
return "¥" + i_temp_value.ToString("C2", t_nfi);
}
else
{
if (ifnegative)
return "<font color='red'>" + i_temp_value.ToString("C2", t_nfi) + "</font>";
else
return i_temp_value.ToString("C2", t_nfi);
}
}
catch (Exception ex)
{
if (i_Show_Flag == true)//显示前面的金额符号
{
return "¥0.00";
}
else
{
return "0.00";
}
}
}
#endregion
#region 格式化成数量格式输出
/// <summary>
///
/// </summary>
/// <param name="i_Value">需要格式化的数值</param>
/// <param name="i_Show_Flag">是否显示金额符号</param>
/// <returns></returns>
public static string FormateToNum(string i_Value)
{
double i_temp_value = 0;
if (i_Value == "") return "";
if (IsNumeric(i_Value) == false) return "";
try
{
NumberFormatInfo t_nfi = new CultureInfo("zh-CN", false).NumberFormat;
t_nfi.CurrencySymbol = "";
i_temp_value = Double.Parse(i_Value);
i_temp_value = Math.Round(i_temp_value, 3);
return i_temp_value.ToString("F3", t_nfi);
}
catch (Exception ex)
{
return "";
}
}
#endregion
#region 格式化成价格模式输出
public static string FormateToPrice(string i_Value, bool i_Show_Flag)
{
double i_temp_value = 0;
if (i_Value == "") return "";
if (IsNumeric(i_Value) == false) return "";
try
{
NumberFormatInfo t_nfi = new CultureInfo("zh-CN", false).NumberFormat;
t_nfi.CurrencySymbol = "";
i_temp_value = Double.Parse(i_Value);
i_temp_value = Math.Round(i_temp_value, 2);
if (i_Show_Flag == true)//显示前面的金额符号
{
return "¥" + i_temp_value.ToString("C2", t_nfi);
}
else
{
return i_temp_value.ToString("C2", t_nfi);
}
}
catch (Exception ex)
{
if (i_Show_Flag == true)//显示前面的金额符号
{
return "¥0.00";
}
else
{
return "0.00";
}
}
}
#endregion
#region 格式化成百分比模式输出
public static string FormateToPercent(string i_Value)
{
if (i_Value == "") return "";
if (IsNumeric(i_Value) == false) return "";
try
{
var per = (Convert.ToDecimal(i_Value) * 100).ToString();
while (per.EndsWith("0"))
{
per = per.Substring(0, per.Length - 1);
}
return per + "%";
}
catch (Exception ex)
{
return "";
}
}
#endregion
#region 格式化为绝对值进行显示
public static string FormateToAbsNum(string i_Value)
{
string i_temp_value = "";
if (i_Value == "")
return "";
if (IsNumeric(i_Value) == false)
return "";
try
{
i_temp_value = Math.Abs(Convert.ToDecimal(i_Value)).ToString();
return i_temp_value;
}
catch
{
return "";
}
}
#endregion
#region 正数显示
public static string PositiveNum(string str)
{
if (str!=""&&int.Parse(str) > 0)
{
return str.ToString();
}
else
{
return "";
}
}
#endregion
#region 普通字符串与UniCode字符串间转换
/// <summary>
/// 字符串转为UniCode码字符串
/// </summary>
/// <param name="s"></param>
/// <returns></returns>
public static string StringToUnicode(string s)
{
char[] charbuffers = s.ToCharArray();
byte[] buffer;
StringBuilder sb = new StringBuilder();
for (int i = 0; i < charbuffers.Length; i++)
{
buffer = System.Text.Encoding.Unicode.GetBytes(charbuffers[i].ToString());
sb.Append(String.Format("\\u{0:X2}{1:X2}", buffer[1], buffer[0]));
}
return sb.ToString();
}
/// <summary>
/// Unicode字符串转为正常字符串
/// </summary>
/// <param name="srcText"></param>
/// <returns></returns>
public static string UnicodeToString(string srcText)
{
string dst = "";
string src = srcText;
int len = srcText.Length / 6;
for (int i = 0; i <= len - 1; i++)
{
string str = "";
str = src.Substring(0, 6).Substring(2);
src = src.Substring(6);
byte[] bytes = new byte[2];
bytes[1] = byte.Parse(int.Parse(str.Substring(0, 2), NumberStyles.HexNumber).ToString());
bytes[0] = byte.Parse(int.Parse(str.Substring(2, 2), NumberStyles.HexNumber).ToString());
dst += Encoding.Unicode.GetString(bytes);
}
return dst;
}
#endregion
分享一下 常用的转换方法(例如:数字转金钱,文本与html互转等)的更多相关文章
- 分享一个常用Adb命令
分享一个常用Adb命令 首先 首先感谢@xuxu的常用adb命令,收益良多,但是已经不能满足于我,所以补充了下. 再者 好久没发帖了,最近论坛老司机们都在讨论/总结,我就用这个干货回报吧. 最后 基于 ...
- 好程序员web前端分享css常用属性缩写
好程序员web前端分享css常用属性缩写,使用缩写可以帮助减少你CSS文件的大小,更加容易阅读.css缩写的主要规则如下: 颜色 16进制的色彩值,如果每两位的值相同,可以缩写一半,例如: #0000 ...
- 在Excel中将数字设置成文本格式的技巧
在Excel中将数字设置成文本格式的技巧 一个简单的方法,利用[数据]菜单的[分列]功能来将数字设置为文本格式.具体操作步骤为: 1.选中所有需要处理的数字单元格. 2.选择[数据]菜单[分列]功能. ...
- 网络通信分享(一):数字签名,数字证书,https通信,数据加密
加密算法: 一:对称加密算法 在对称加密算法中,加密使用的密钥和解密使用的密钥是相同的.也就是说,加密和解密都是使用的同一个密钥.因此对称加密算法要保证安全性的话,密钥要做好保密,只能让使用的人知道, ...
- 分享我常用的一些JS验证和函数
下面是我常用一些JS验证和函数,有一些验证我直接写到了对象的属性里面了,可以直接通过对象.方法来调用//浮点数除法运算 function fdiv(a, b, n) { if (n == undefi ...
- [分享] VIM 常用命令及游戏练级
分享一个不错的文章,讲解了 VIM 的常用命令. http://coolshell.cn/articles/5426.html 另,介绍一个可以帮助熟悉VIM命令的练级游戏. 游戏地址:http:// ...
- 项目经验分享——Java常用工具类集合 转
http://blog.csdn.net/xyw591238/article/details/51678525 写在前面 本文涉及的工具类部分是自己编写,另一部分是在项目里收集的.工具类涉及数 ...
- 项目常用Javascript分享,包含常用验证和Cookie操作
function IsEmail(str) { var r = /^[a-zA-Z0-9._%-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,4}$/; if (r.test(str)) ...
- 分享java常用技术教程:dubbo、zookeeper、ActiveMq、多线程、Redis、PowerDesigner等
游戏是自己整理的邮箱来源于网上,下面是我的有道云的分享地址: https://note.youdao.com/share/?id=c5f258fa9efd1b28b2d8f0d37e59b194&am ...
随机推荐
- STL:list用法详解
list容器介绍 相对于vector容器的连续线性空间,list是一个双向链表,它有一个重要性质:插入操作和删除操作都不会造成原有的list迭代器失效,每次插入或删除一个元素就配置或释放一个元素空间. ...
- 5、使用Libgdx设计一个简单的游戏------雨滴
(原文:http://www.libgdx.cn/topic/49/5-%E4%BD%BF%E7%94%A8libgdx%E8%AE%BE%E8%AE%A1%E4%B8%80%E4%B8%AA%E7% ...
- 文件I/O实践(2) --文件stat
功能:获取文件元数据 #include <sys/types.h> #include <sys/stat.h> #include <unistd.h> int st ...
- 【一天一道LeetCode】#35. Search Insert Position
一天一道LeetCode系列 (一)题目 Given a sorted array and a target value, return the index if the target is foun ...
- 寻找春天 九宫格日记-2014.04.26
写九宫格日记 总会在听到某一首歌的时候泪流满面:总会在看到某个似曾相识的背影的时候惆怅莫名,总会在嗅到某种香味的时候默默发呆,总会在经过某个地方的时候频频回首.生命有限,不要把它浪费在重复别人的生活上 ...
- SpriteBuilder中音频波长超过Timeline结尾的情况
见如下图: 注意最后一个音频波长延续到Timeline结尾之后.表明这个音频文件播放长度超过Timeline(动画)播放的长度.这是否成为一个问题要视情况而定.而在这里无所谓. 如果节点所拥有的Tim ...
- 用简单的C语言实现多任务轮流切换(模拟操作系统线程机制)
最近在看linux内核的进程调度算法,也写了不少的内核注释,也参考了鸿哥的单片机框架,代码注释就开源在我的CSDN的git代码库里,有兴趣的可以去瞧瞧. 突发奇想,想到了既然单片机能够实现,那么我用标 ...
- cocos2d-x项目与vs2013编译
cocos2d-x项目与vs2013编译 2014-12-17 cheungmine 因为C++11引入了众多开源软件的特性,导致cocos2d-x r3.3项目无法用 vs2010编译. 所以安装了 ...
- OpenCV GUI基本操作,回调函数,进度条,裁剪图像等
代码为转载,出处找不到了,不贴了 工具条进度条: // ConvertColor.cpp : 定义控制台应用程序的入口点. // #include "stdafx.h" #incl ...
- linux下安装ruby版本管理器RVM
这里以ubuntu为例. 直接以如下命令行安装可能会不成功,因为rvm.io站点有时会被墙: curl -sSL https://get.rvm.io | bash -s stable #或者 cur ...