国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發(fā)設計 > 正文

C# 字符串詳細使用

2019-11-17 02:50:23
字體:
來源:轉載
供稿:網(wǎng)友

C# 字符串詳細使用

轉自 http://m.survivalescaperooms.com/candywyq/archive/2007/07/24/830021.html

1.Convert.ToInt32與Int32.Parse的恩恩怨怨

2.Split的3種用法

3.@"abc"和"abc"區(qū)別在那里

4.保留2位有效小數(shù)及四舍五入

5.url傳遞中文的解決方案

6.把123456789轉換為12-345-6789的3種方法

7.交換兩個指定位置字符的4種方法

8.“%10”的妙用

9.輸出21個AAAAAAAAAAAAAAAAAAAAA的巧妙做法

1.Convert.ToInt32Int32.Parse的恩恩怨怨

這2個方法都可以把把string解析為int,那么我們一定會有疑問:到底他們有什么區(qū)別?什么時候該用什么?性能如何等等。

其實在2.0里還有Int32.TryParse也實現(xiàn)了同樣的效果。

using System;using System.Collections.Generic;using System.Text; namespace Consoleapplication1 {            class PRogram            {                       static void Main(string[] args)                       {                                string myString = "1234";                   int myint = 0;                                myint = Convert.ToInt32(myString);                   Console.Write(myint+"/r/n ");                                myint = Int32.Parse(myString);                    Console.Write(myint+"/r/n ");                         Int32.TryParse(myString, out myint);                        Console.Write(myint+"/r/n");                }          }}    

表面上看,可見3個方法都實現(xiàn)了同樣的效果!

那么我們把代碼改一下:

            //string myString = "1234";                     string myString = null;                      int myint = 0;            myint = Convert.ToInt32(myString);            Console.Write(myint+"/r/n");            myint = Int32.Parse(myString);             Console.Write(myint+"/r/n");            Int32.TryParse(myString, out myint);              Console.Write(myint+"/r/n");            

這次字符串是null,那么運行結果會怎樣呢?

這是因為如果解析錯誤: Convert.ToInt32()在null時不拋異常而是返回0; Int32.Parse()拋異常Int32.TryParse()不拋異常,會返回true或false來說明解析是否成功,如果解析錯誤,調(diào)用方將會得到0值。

由于Convert.ToInt32()在null時我們看不到Int32.TryParse()的運行結果所以再分調(diào)試和不調(diào)試來看結果的差異:

調(diào)試:

不調(diào)試:

其實一般出bug畢竟屬于少數(shù),而且大家都會測試保證不出bug,那么我們最關心的或許就是性能。

再把代碼修改一下: 2

string myString1 = "1234";     //string myString = null;        int myint = 0;            Console.Write(System.DateTime.Now.ToString()+"  "+System.DateTime.Now.Millisecond.ToString() + " ");           for (int i = 0; i < 1000000;i++ )           {                   myint = Convert.ToInt32(myString1);     }           Console.Write(myint + " /r/n");   Console.Write(System.DateTime.Now.ToString() + "  " + System.DateTime.Now.Millisecond.ToString() + "/r/n ");        string myString2 = "1234";           for (int i = 0; i < 1000000; i++)       {                 myint = Int32.Parse(myString2);   }          Console.Write(myint + "/r/n ");      Console.Write(System.DateTime.Now.ToString() + "  " + System.DateTime.Now.Millisecond.ToString() + " ");     string myString3 = "1234";          for (int i = 0; i < 1000000; i++)     {                  Int32.TryParse(myString3, out myint);      }           Console.Write(myint + "/r/n ");     Console.Write(System.DateTime.Now.ToString() + "  " + System.DateTime.Now.Millisecond.ToString() + "/r/n "); 

我們讓3個方法執(zhí)行100萬次轉換毫秒差異:

為了準確多做幾次測試:

第二次

第三次

第一次第二次第三次
Convert.ToInt32()532-204=3281163-750=413782-469=313
Int32.Parse()844-532=312360-63=2971094-782=312
Int32.TryParse()1141-844=297657-360=297375-94=281

其實我們可以得出結論:

3個方法幾乎沒有差異! 如果真要追求完美那么性能的差異是:Int32.TryParse()優(yōu)于Int32.Parse()優(yōu)于Convert.ToInt32()。 所以個人建議:.NET1.1下用Int32.Parse();.NET2.0用Int32.TryParse()。

那么為什么會這樣呢? 其實這些數(shù)據(jù)不是偶然的,因為: Convert.ToInt32 會把最終的解析工作代理給 Int32.Parse; Int32.Parse 會把最終的解析工作代理給Number.ParseInt32; Int32.TryParse 會把最終的解析工作代理給Number.TryParseInt32。

至于其他進制的轉換請參考MSDN。重載參數(shù)即可!

2.Split的3種用法

我們可以把12 33 456 12342 拼起來就是一個字符,因為很多時候我們覺得處理只有幾個組的時候用數(shù)組很麻煩所以我們用“|”或者“,”等等把他們拼起來在需要的時候用Split打散即可。//清清月兒 http://blog.csdn.net/21aspnet/

下面列舉一些用法,不做性能分析了。

方法一:

static void Main(string[] args)  {              string aa = "1234,234523,4324,324";     string[] cc = aa.Split(new char[] { ',' });         foreach (string bb in cc)           {                         Console.Write(bb + "/r/n ");      }            }

方法二:

string aa = "1234,234523,4324,324";string[] str = aa.Split(',');    foreach (string bb in str)  {                    Console.Write(bb + " /r/n");}

方法三:

static void Main(string[] args) {                  string a = "1,2,3,4,5,6,7,8,9";      string b = ",";              string[] c = Split(a, b);     foreach (string bb in c)              {                          Console.Write(bb + " /r/n");      }        }     public static string[] Split(string input, string pattern)   {                   string[] arr = System.Text.RegularExpressions.Regex.Split(input, pattern);                   return arr;  }    

實現(xiàn)把文章按空格打散:

public static void Main ()  {              string a="While laughter is is very aerobic activity engages every single organ system";      string b=" ";        string []c=TestDoWhile.Split(a,b);      foreach(string bb in c)      {          Console.Write(bb+" /r/n");      }}public static string[] Split(string input,string pattern){      string[] arr = System.Text.RegularExpressions.Regex.Split(input,pattern);                 return arr;     } 

3.@"abc"和"abc"區(qū)別在那里 @"abc"和"abc"沒有什么區(qū)別

不過@是忽略轉義字符的! 比如 "abc/n" 輸出 abc 并加個換行 但是 @"abc/n" 輸出 abc/n 無換行! 取消轉義

比如你想將 C:/windows/system 這個字符串賦值給 str

一般情況下要: string str = "C://windows//system";

因為在C#中,// 才會被轉義成一個 / 又例如/n就是換行符

而加入@,就可以這樣:

string str = @"C:/windows/system";

4.保留2位有效小數(shù)及四舍五入 這又是一個經(jīng)常遇到的問題。

保留2位有效小數(shù)(和保留N位一樣的參數(shù)不同而已):

         static void Main()         {             Double a = 12.345678;             Console.Write(Math.Round(a,2));         }

四舍五入:

static void Main() {      Double a = 12.345678;//是要四舍五入的數(shù)      Console.Write((a*10000+0.5)/10000); }

5.url傳遞中文的解決方案

1.設置web.config文件。 <system.web> ...... <globalization requestEncoding="gb2312" responseEncoding="gb2312" culture="zh-CN" fileEncoding="gb2312" /> ...... </system.web>

2.傳遞中文之前,將要傳遞的中文參數(shù)進行編碼,在接收時再進行解碼。 >> 進行傳遞 string Name = "中文參數(shù)"; Response.Redirect("B.aspx?Name="+Server.UrlEncode(Name)); >> 進行接收 string Name = Request.QueryString["Name"]; Response.Write(Server.UrlDecode(Name));

3.如果是從 .HTML 文件向 .Aspx 文件進行傳遞中文參數(shù)的話(即不從后臺用 Redirect()方法進行 Url 轉換)。一樣要將傳遞的中文參數(shù)進行編碼,在接收時再進行解碼。 >> 進行傳遞 <script language="javaScript"> function GoUrl() { var Name = "中文參數(shù)"; location.href = "B.aspx?Name="+escape(Name); } </script> <body onclick="GoUrl()"> >> 進行接收 string Name = Request.QueryString["Name"]; Response.Write(Server.UrlDecode(Name));

一般來說。設置web.config文件就可以了。但是如果你用 Javascript 調(diào)用 webservice 方法的話(往webservice里面?zhèn)鬟f中文參數(shù))。設置 web.config 文件好象無效。

6.把123456789轉換為12-345-6789的3種方法方法一:

發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 兴仁县| 陇川县| 凌源市| 建阳市| 右玉县| 新巴尔虎左旗| 固始县| 宜黄县| 呈贡县| 门源| 凤山市| 桃园县| 延边| 体育| 盐源县| 马尔康县| 登封市| 扎囊县| 周口市| 平安县| 宜春市| 贺兰县| 肥乡县| 汕尾市| 高雄市| 苏尼特左旗| 和田县| 广汉市| 南郑县| 西盟| 和硕县| 阳信县| 吉水县| 成安县| 新丰县| 平顺县| 定南县| 石首市| 雅安市| 永定县| 花垣县|