C#操作字符串经验总结_第1页
C#操作字符串经验总结_第2页
C#操作字符串经验总结_第3页
C#操作字符串经验总结_第4页
C#操作字符串经验总结_第5页
已阅读5页,还剩8页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、C#操作字符串经验总结与Int32.Parse的恩恩怨怨2.Split的3种用法3."abc"和"abc"区别在那里4.保留2位有效小数及四舍五入5.url传递中文的解决方案6.把123456789转换为12-345-6789的3种方法7.交换两个指定位置字符的4种方法8.“%10”的妙用9.输出21个AAAAAAAAAAAAAAAAAAAAA的巧妙做法与Int32.Parse的恩恩怨怨这2个方法都可以把把string解析为int,那么我们一定会有疑问:到底他们有什么区别?什么时候该用什么?性能如何等等。其实在2.0里还有Int32.TryParse也实

2、现了同样的效果。using System; using System.Collections.Generic; using System.Text; namespace ConsoleApplication1     class Program              static void Main(string args   

3、60;                  string myString = "1234"             int myint = 0;        

4、     myint = Convert.ToInt32(myString;             Console.Write(myint+"rn "             myint = Int32.Parse(myString; &

5、#160;           Console.Write(myint+"rn "             Int32.TryParse(myString, out myint;            

6、0;Console.Write(myint+"rn"                表面上看,可见3个方法都实现了同样的效果!那么我们把代码改一下:            /string myString = "1234"     

7、0;       string myString = null;             int myint = 0;             myint = Convert.ToInt32(myString;

8、             Console.Write(myint+"rn"             myint = Int32.Parse(myString;             Console.

9、Write(myint+"rn"             Int32.TryParse(myString, out myint;           Console.Write(myint+"rn"这次字符串是null,那么运行结果会怎样呢?这是因为如果解析错误:Convert.ToInt32(在null时不抛异常而是

10、返回0;Int32.Parse(要抛异常;Int32.TryParse(不抛异常,会返回true或false来说明解析是否成功,如果解析错误,调用方将会得到0值。由于Convert.ToInt32(在null时我们看不到Int32.TryParse(的运行结果所以再分调试和不调试来看结果的差异:调试:不调试:其实一般出bug毕竟属于少数,而且大家都会测试保证不出bug,那么我们最关心的或许就是性能。再把代码修改一下:2            string myStr

11、ing1 = "1234"             /string myString = null;/清清月儿              int myint = 0;        

12、;     Console.Write(System.DateTime.Now.ToString(+"  "+System.DateTime.Now.Millisecond.ToString( + " "             for (int i = 0; i <

13、60;1000000;i+                               myint = Convert.ToInt32(myString1;            

14、              Console.Write(myint + " rn"             Console.Write(System.DateTime.Now.ToString( + "  " + Sys

15、tem.DateTime.Now.Millisecond.ToString( + "rn "             string myString2 = "1234"             for (int i = 

16、0; i < 1000000; i+                              myint = Int32.Parse(myString2;         

17、                 Console.Write(myint + "rn "             Console.Write(System.DateTime.Now.ToString( + "  &quo

18、t; + System.DateTime.Now.Millisecond.ToString( + " "             string myString3 = "1234"             for (int

19、0;i = 0; i < 1000000; i+                              Int32.TryParse(myString3, out myint;     &#

20、160;                    Console.Write(myint + "rn "             Console.Write(System.DateTime.Now.ToString( + 

21、"  " + System.DateTime.Now.Millisecond.ToString( + "rn "我们让3个方法执行100万次转换看毫秒的差异:为了准确多做几次测试:第二次第三次  第一次 第二次 第三次 Convert.ToInt32( 532-204=328 1163-750=413 782-469=313  Int32.Parse( 844-532=312 360-63=297 1094

22、-782=312  Int32.TryParse( 1141-844=297 657-360=297 375-94=281 其实我们可以得出结论:3个方法几乎没有差异!如果真要追求完美那么性能的差异是:Int32.TryParse(优于Int32.Parse(优于Convert.ToInt32(。所以个人建议:.NET1.1下用Int32.Parse(;.NET2.0用Int32.TryParse(。那么为什么会这样呢?其实这些数据不是偶然的,因为:Convert.ToInt32 会把最终的解析工作代理给 Int32.Parse;Int32.P

23、arse 会把最终的解析工作代理给Number.ParseInt32; Int32.TryParse 会把最终的解析工作代理给Number.TryParseInt32。至于其他进制的转换请参考MSDN。重载参数即可!2.Split的3种用法我们可以把12     33   456    12342  拼起来就是一个字符,因为很多时候我们觉得处理只有几个组的时候用数组很麻烦所以我们用“|”或者“,”等等把他们拼起来在需要的时候用Split打散即可。下面列举一些用法,不做性能分析了。方法一:

24、0;       static void Main(string args                       string aa = "1234,234523,4324,324"      

25、       string cc = aa.Split(new char . ','              foreach (string bb in cc          &#

26、160;                 Console.Write(bb + "rn "                          

27、0;       方法二:            string aa = "1234,234523,4324,324"             string str = aa.Split(',' 

28、0;           foreach (string bb in str                              Console.Write(bb&

29、#160;+ " rn"             方法三:static void Main(string args                      string a = 

30、"1,2,3,4,5,6,7,8,9"             string b = ","             string c = Split(a, b;        &

31、#160;    foreach (string bb in c                              Console.Write(bb + " rn"  &#

32、160;                            public static string Split(string input, string pattern          

33、60;           string arr = System.Text.RegularExpressions.Regex.Split(input, pattern;             return arr;         实现

34、把文章按空格打散:public static void Main (                string a="While laughter is is very aerobic activity engages every single organ system" &#

35、160;       string b=" "         string c=TestDoWhile.Split(a,b;         foreach(string bb in c        

36、60;             Console.Write(bb+" rn"                   public static string Split(string input,string pattern  &#

37、160;           string arr = System.Text.RegularExpressions.Regex.Split(input,pattern;         return arr;      3."abc"和"abc"区别在那里"abc"和

38、"abc"没有什么区别不过是忽略转义字符的!比如 "abcn" 输出 abc 并加个换行但是 "abcn" 输出 abcn 无换行!取消转义比如你想将 C:windowssystem 这个字符串赋值给 str一般情况下要:string str = "C:windowssystem"因为在C#中, 才会被转义成一个 又例如n就是换行符而加入,就可以这样:string str = "C:windowssystem"4.保留2位有效小数及四舍

39、五入这又是一个经常遇到的问题。保留2位有效小数(和保留N位一样的参数不同而已):      static void Main(                      Double a = 12.345678;        &

40、#160;    Console.Write(Math.Round(a,2;          四舍五入:      static void Main(                      Do

41、uble a = 12.345678;/是要四舍五入的数             Console.Write(a*10000+0.5/10000;         5.url传递中文的解决方案1.设置web.config文件。   .    .    2.传递中文之前,将要传递的中文参数进行编码,在接收时再进行解码。&

42、#160; >> 进行传递  string Name = "中文参数"  Response.Redirect("B.aspx?Name="+Server.UrlEncode(Name;  >> 进行接收  string Name = Request.QueryString"Name"  Response.Write(Server.UrlDecode(Name; 3.如果是从

43、 .HTML 文件向 .Aspx 文件进行传递中文参数的话(即不从后台用 Redirect(方法进行 Url 转换)。一样要将传递的中文参数进行编码,在接收时再进行解码。 >> 进行传递    function GoUrl(    var Name = "中文参数"  location.href = "B.aspx?Name="+escape(Name;        >>

44、 进行接收  string Name = Request.QueryString"Name"  Response.Write(Server.UrlDecode(Name; 一般来说。设置web.config文件就可以了。但是如果你用 JavaScript 调用 webservice 方法的话(往webservice里面传递中文参数)。设置 web.config 文件好象无效。6.把123456789转换为12-345-6789的3种方法方法一:     &

45、#160;       string a = "123456789"             a = int.Parse(a.ToString("#-#-#"             Console.

46、Write(a; 方法二:            string a = "123456789"             a = a.Insert(5, "-".Insert(2, "-"    

47、60;        Console.Write(a;方法三:using System; using System.Collections.Generic; using System.Text; using System.Text.RegularExpressions; namespace ConsoleApplication1     class Program      &

48、#160;       static void Main(                      string a = "123456789"          &#

49、160;  Regex reg = new Regex("(d2(d3(d4$"             a = reg.Replace(a, "$1-$2-$3"             Console.Write(a; 

50、60;                      7.交换两个指定位置字符的4种方法方法一:static void Main(                      string

51、0;s = "123456789"             SwapChar(ref s, 3, 6;             Console.Write(s.ToString(;           

52、;       static void SwapChar(ref string s, int i1, int i2                      char temp = si1;   &#

53、160;         char temp1 = si2;             s = s.Remove(i1, 1.Insert(i1, temp1.ToString(;            

54、0;s = s.Remove(i2, 1.Insert(i2, temp.ToString(;          方法二: static void Main(                      string s 

55、= "123456789"             /SwapChar(s, 3, 6;             Console.Write(SwapChar(s, 3, 6.ToString(;        

56、0;         static string SwapChar(string s, int p1, int p2                      if (p1 = p2 | (p1

57、60;< 0 | (p2 < 0 return s;             if (p1 >= s.Length | (p2 >= s.Length return s;           &#

58、160; char vChars = s.ToCharArray(;             vCharsp1 = (char(vCharsp2 | (vCharsp2 = vCharsp1 & 0;             ret

59、urn new string(vChars;          方法三:static void Main(                      string s = "123456789"   

60、          Console.Write(SwapChar(s, 3, 6.ToString(;                  public static string SwapChar(string str, int a, int

61、0;b                      char newStr = str.ToCharArray(;             newStra = strb;      

62、       newStrb = stra;             return new string(newStr;          方法四:using System; using System.Collections.Generic; using

63、60;System.Text; using System.Text.RegularExpressions; namespace ConsoleApplication1     class Program              static void Main(            &

64、#160;         string s = "123456789"             Console.Write(SwapChar(s, 3, 6.ToString(;                  static string SwapChar(string s, int p1, int p2           

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论