.NET中的CString知识点

1.计算含有双字节(比如汉字)的占用长度

比如:string str = '" I Love 中国";

如果直接用str.Length 则发现结果9,其中"中国".Length = 2,有点不符合常规,特别实在字符串输出格式控制时造成麻烦

 

ContractedBlock.gif ExpandedBlockStart.gif 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.半角与全角的转换

ContractedBlock.gif ExpandedBlockStart.gif 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,如下所示:

ContractedBlock.gif ExpandedBlockStart.gif Code
g.MeasureString(str, new Font(fontFamily, fontSize, GraphicsUnit.Pixel));

创建Graphics 对象
在窗体或控件的 Paint 事件中接收对图形对象的引用,作为 PaintEventArgs 的一部分。在为控件创建绘制代码时,通常会使用此方法来获取对图形对象的引用。
调用某控件或窗体的 CreateGraphics 方法以获取对 Graphics 对象的引用,该对象表示该控件或窗体的绘图图面。如果想在已存在的窗体或控件上绘图,请使用此方法。
由从 Image 继承的任何对象创建 Graphics 对象。此方法在您需要更改已存在的图像时十分有用。

方法二:

ContractedBlock.gif ExpandedBlockStart.gif Code
TextRenderer.MeasureText(str, new Font(fontFamily, fontSize, GraphicsUnit.Pixel));

以上均要引用System.Windows.Forms名字空间

 

4.获取字符串中的数字

ContractedBlock.gif ExpandedBlockStart.gif 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

转载于:https://www.cnblogs.com/lne818/archive/2008/08/01/1258200.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值