1.计算含有双字节(比如汉字)的占用长度
比如:string str = '" I Love 中国";
如果直接用str.Length 则发现结果9,其中"中国".Length = 2,有点不符合常规,特别实在字符串输出格式控制时造成麻烦
Code
private string GetFormatedString(string p_str,int p_len)
{
//方法一:计算汉字的个数
//int iHanZiLen = Encoding.Default.GetByteCount(p_str) - p_str.Length;
//方法二:计算汉字的个数
int iHanZiLen = Regex.Matches(p_str, @"[\u4e00-\u9fa5]").Count;
iLen = p_len - iLen;
string sFormat = "{0,-" + iLen.ToString() + "}";
return string.Format(sFormat,p_str);
}
2.半角与全角的转换
Code
public static string CharConverter(string source)
{
System.Text.StringBuilder result = new System.Text.StringBuilder(source.Length, source.Length);
for (int i = 0; i < source.Length; i++)
{
if (source[i] >= 65281 && source[i] <= 65373)
{
result.Append((char)(source[i] - 65248));
}
else if (source[i] == 12288)
{
result.Append(' ');
}
else
{
result.Append(source[i]);
}
}
return result.ToString();
}
3.计算字符串在指定字体条件下的像素信息
通过两种方法计算,结果略有不同
方法一:
首先引用Graphic对象g,如下所示:
Code
g.MeasureString(str, new Font(fontFamily, fontSize, GraphicsUnit.Pixel));
创建Graphics 对象
在窗体或控件的 Paint 事件中接收对图形对象的引用,作为 PaintEventArgs 的一部分。在为控件创建绘制代码时,通常会使用此方法来获取对图形对象的引用。
调用某控件或窗体的 CreateGraphics 方法以获取对 Graphics 对象的引用,该对象表示该控件或窗体的绘图图面。如果想在已存在的窗体或控件上绘图,请使用此方法。
由从 Image 继承的任何对象创建 Graphics 对象。此方法在您需要更改已存在的图像时十分有用。
方法二:
Code
TextRenderer.MeasureText(str, new Font(fontFamily, fontSize, GraphicsUnit.Pixel));
以上均要引用System.Windows.Forms名字空间
4.获取字符串中的数字
Code
public decimal GetNumber(string str)
{
decimal result = 0;
if (str != null && str != string.Empty)
{
// 正则表达式剔除非数字字符(不包含小数点.)
str = Regex.Replace(str, @"[^\d.\d]", "");
// 如果是数字,则转换为decimal类型
if (Regex.IsMatch(str, @"^[+-]?\d*[.]?\d*$"))
{
result = decimal.Parse(str);
}
}
return result;
}
4.Double类型的四舍五入
常常遇到四舍五入的问题,下面提供两种方法:
一、通过Round方法
using System.Math;
......
Round(3.045,2)//返回值:3.05
Round(3.044,2)//返回值:3.04
二、通过字符串格式化
Double PI = 3.1415936;
......
String strPI = PI.ToString("F3");//返回值:3.142