C# .Net 学习积累《五》
来源:互联网 发布:沈阳seo 公司 编辑:程序博客网 时间:2024/05/21 22:41
一、C# 中 String 和 Stringbuilder 的区别
String 对象是不可改变的。每次使用 System.String 类中的方法之一或进行运算时(如赋值、拼接等)时,都要在内存中创建一个新的字符串对象,这就需要为该新对象分配新的空间。而 StringBuilder 则不会。在需要对字符串执行重复修改的情况下,与创建新的 String 对象相关的系统开销可能会非常昂贵。如果要修改字符串而不创建新的对象,则可以使用 System.Text.StringBuilder 类。例如,当在一个循环中将许多字符串连接在一起时,使用 StringBuilder 类可以提升性能。
二、 C# 获取小数位方法
1.System.Globalization.NumberFormatInfo provider = new System.Globalization.NumberFormatInfo(); provider.NumberDecimalDigits =intDecLength; //要设定的小数位数 double strCashAmt=Convert.ToDouble(this.txtCashAmt.Text); //先把控件內的值转成double this.txtCashAmt.Text = strCashAmt.ToString("N",provider); //再利用ToString函数格式化小数位数 2.保留N位,四舍五入 . decimal d= decimal.Round(decimal.Parse("0.55555"),2); 3.保留N位四舍五入 Math.Round(0.55555,2) 4,保留N位四舍五入 double dbdata = 0.55555; string str1 = dbdata.ToString("f2");//fN 保留N位,四舍五入 5.保留N位四舍五入 string result = String.Format("{0:N2}", 0.55555);//2位 string result = String.Format("{0:N3}", 0.55555);//3位 6. 保留N位四舍五入 (不错) double s=0.55555; result=s.ToString("#0.00");//点后面几个0就保留几位 C#下如果显示保留小数位数,及百分号的解决方法: 1、用NumberFormatInfo类来解决: System.Globalization.NumberFormatInfo provider = new System.Globalization.NumberFormatInfo(); provider.PercentDecimalDigits = 2;//小数点保留几位数. provider.PercentPositivePattern = 2;//百分号出现在何处. double result = (double)1 / 3;//一定要用double类型. Response.Write(result.ToString("P", provider)); 2、用toString方法.: public string getRate(double hcount, double task) { string rValue; string temp = ""; if (task == 0) { task = 1; } double db = (hcount / task) * 100; if (hcount >= task) { rValue = "100%"; } else { rValue = db.ToString("#0.#0") + "%"; } return rValue; } string str1 = String.Format("{0:N1}",56789); //result: 56,789.0 string str2 = String.Format("{0:N2}",56789); //result: 56,789.00 string str3 = String.Format("{0:N3}",56789); //result: 56,789.000 string str8 = String.Format("{0:F1}",56789); //result: 56789.0 string str9 = String.Format("{0:F2}",56789); //result: 56789.00 string str11 =(56789 / 100.0).ToString("#.##"); //result: 567.89 string str12 =(56789 / 100).ToString("#.##"); //result: 567
参考出处: http://www.jb51.net/article/17010.htm
三、 C# 获取字符串 长度的方法参考:
在包含中文的字符串处理时,除了裁切固定长度的操作之外,有时也需要获取一个字符串的实际字符数,比如我们限制输入框字符数的时候。而C#提供的string.Length属性却无法满足我们的要求,由此,便有了下面这个方法:/// <summary>/// 获取字符串长度。与string.Length不同的是,该方法将中文作 2 个字符计算。/// </summary>/// <param name="str">目标字符串</param>/// <returns></returns>public static int GetLength(string str){ if (str == null || str.Length == 0) { return 0; } int l = str.Length; int realLen = l; #region 计算长度 int clen = 0;//当前长度 while (clen < l) { //每遇到一个中文,则将实际长度加一。 if ((int)str[clen] > 128) { realLen++; } clen++; } #endregion return realLen;}在写上面那个方法时,我突然想到,如果把字符串转换成byte[]是不是也能获取到这个长度呢?姑且试试:public static int GetLength_Obsoleted(string str){ if (str == null || str.Length == 0) { return 0; } byte[] data = Encoding.Default.GetBytes(str); return data.Length;}
这个方法也能够让我们如愿取到字符串长度。但这两个方法孰优孰劣呢?我使用了一句110字符长度的中文进行500万次调用测试,事实说话:GetLength 的执行效率几乎是 GetLength_Obsoleted 的 4 倍!
原文地址:
http://www.cnblogs.com/uonun/articles/1698978.html
四、C#实现打开文件或文件夹及选中文件
打开文件夹:
1
System.Diagnostics.Process.Start(FilePath);
打开文件夹中某个文件:
1
System.Diagnostics.Process.Start(FilePath+
"/"
+FileName);
打开文件夹并选中单个文件:
1
System.Diagnostics.Process.Start(
"Explorer"
,
"/select,"
+ FilePath+
"\\"
+FileName);
或
1
System.Diagnostics.Process.Start(
"Explorer.exe"
,
"/select,"
+ FilePath+
"\\"
+FileName);
用IE打开文件:
1
System.Diagnostics.Process.Start(
"Explorer"
,FilePath+
"\\"
+FileName);
或
1
System.Diagnostics.Process.Start(
"Explorer.exe"
,FilePath+
"\\"
+FileName);
注:(explorer,explorer.exe,select,不区分大小写,”/selecet,”其中”/,”都不能少,FilePath为文件路径不包含文件名)
扩展提示:可以采用 Application.StartupPath 获得应用程序所在的目录。
五、 C#中实现文本框只能输入数字文本框的keypress事件:在你所要输入的文本框(比如txtNum)的KeyPress事件编写如下代码: private void txtNum_KeyPress(object sender, KeyPressEventArgs e) { if (!char.IsNumber(e.KeyChar) && e.KeyChar!=(char)Keys.Back) { e.Handled = true; } }用方法实现: 在TextChanged事件中^[0-9]{1,}$ 正则表达式 Regex r = new Regex("^[0-9]{1,}$"); if(!r.IsMatch(textBox1.Text)) { Messagebox.Show("请输入数字"); }文本框onkeydown事件: txt1.Attributes.Add("onkeydown", "if(!((event.keyCode>=48&&event.keyCode<=57)||(event.keyCode>=96&&event.keyCode<=105)) && (event.keyCode!=8) && (event.keyCode!=9) && (event.keyCode!=13) && (event.keyCode!=46)){alert('请输入数字');return false;}");文本框KeyPress事件:private void txtNumber_KeyPress(object sender, System.Windows.Forms.KeyPressEventArgs e) { if (e.KeyChar >= '0' && e.KeyChar <= '9') { e.Handled = false; return; } e.Handled = true; }利用正则表达式限制:利用正则表达式限制网页表单里的文本框输入内容: 用正则表达式限制只能输入中文:onkeyup="value=value.replace(/[^\u4E00-\u9FA5]/g,'')" onbeforepaste="clipboardData.setData('text',clipboardData.getData('text').replace(/[^\u4E00-\u9FA5]/g,''))" 1.用正则表达式限制只能输入全角字符: onkeyup="value=value.replace(/[^\uFF00-\uFFFF]/g,'')" onbeforepaste="clipboardData.setData('text',clipboardData.getData('text').replace(/[^\uFF00-\uFFFF]/g,''))" 2.用正则表达式限制只能输入数字:onkeyup="value=value.replace(/[^\d]/g,'') "onbeforepaste="clipboardData.setData('text',clipboardData.getData('text').replace(/[^\d]/g,''))" 3.用正则表达式限制只能输入数字和英文:onkeyup="value=value.replace(/[\W]/g,'') "onbeforepaste="clipboardData.setData('text',clipboardData.getData('text').replace(/[^\d]/g,''))" 文本框金额输入: <asp:RegularExpressionValidator ID="RegularExpressionValidator1" runat="server" ControlToValidate="txtAmount" Display="None" ErrorMessage="收款金额只能是数字,最多4位小数" ValidationExpression="^[0-9]+(\.[0-9]{0,4})?$"></asp:RegularExpressionValidator>
- C# .Net 学习积累《五》
- C# .Net 学习积累 《一》
- C# .Net 学习积累 《二》
- C# .Net 学习积累 《三》
- C# .Net 学习积累 《四》
- C# .Net 实例积累
- C#学习笔记之五(ADO.net)
- C#学习笔记之五(ADO.net)
- C# 学习积累
- asp.net学习积累
- C#下打印学习积累
- 学习C#小问题积累
- unity3d之C#学习积累
- C#学习笔记(五)-ADO.NET访问数据库
- C#和.NET基础知识——学习笔记(五)
- 【JfaceTextFramework学习笔记之五】积累
- C#学习笔记(五)
- C#学习教程五
- poj 2029 && zoj 1716 Get Many Persimmon Trees
- 数组基础
- Eclipse常用快捷键大全(四)
- 暴风影音2011 去广告补丁V1.1
- Java 7 新特性 -- 实战篇
- C# .Net 学习积累《五》
- 【转】Spring 注解
- 关于Android隐式启动Activity
- Easy RadControl 之 RadTabControl(Silverlight)
- ☆ Visual Studio 2008 每日小窍门 【持续发布中~】 Tips:083
- linux brctl(网桥)
- 【转】对话框大合集
- 解决IE6中 PNG不透明的问题
- Matlab与OpenCV在实际应用中的选择问题