麻豆小视频在线观看_中文黄色一级片_久久久成人精品_成片免费观看视频大全_午夜精品久久久久久久99热浪潮_成人一区二区三区四区

首頁 > 學院 > 開發設計 > 正文

C# 字符串詳細使用

2019-11-17 02:50:23
字體:
來源:轉載
供稿:網友

C# 字符串詳細使用

轉自 http://www.companysz.com/candywyq/archive/2007/07/24/830021.html

1.Convert.ToInt32與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的巧妙做法

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

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

其實在2.0里還有Int32.TryParse也實現了同樣的效果。

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個方法都實現了同樣的效果!

那么我們把代碼改一下:

            //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來說明解析是否成功,如果解析錯誤,調用方將會得到0值。

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

調試:

不調試:

其實一般出bug畢竟屬于少數,而且大家都會測試保證不出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個方法執行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()優于Int32.Parse()優于Convert.ToInt32()。 所以個人建議:.NET1.1下用Int32.Parse();.NET2.0用Int32.TryParse()。

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

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

2.Split的3種用法

我們可以把12 33 456 12342 拼起來就是一個字符,因為很多時候我們覺得處理只有幾個組的時候用數組很麻煩所以我們用“|”或者“,”等等把他們拼起來在需要的時候用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;  }    

實現把文章按空格打散:

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"區別在那里 @"abc"和"abc"沒有什么區別

不過@是忽略轉義字符的! 比如 "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位有效小數及四舍五入 這又是一個經常遇到的問題。

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

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

四舍五入:

static void Main() {      Double a = 12.345678;//是要四舍五入的數      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.傳遞中文之前,將要傳遞的中文參數進行編碼,在接收時再進行解碼。 >> 進行傳遞 string Name = "中文參數"; Response.Redirect("B.aspx?Name="+Server.UrlEncode(Name)); >> 進行接收 string Name = Request.QueryString["Name"]; Response.Write(Server.UrlDecode(Name));

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

一般來說。設置web.config文件就可以了。但是如果你用 Javascript 調用 webservice 方法的話(往webservice里面傳遞中文參數)。設置 web.config 文件好象無效。

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

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 午夜视频中文字幕 | 香蕉视频1024 | 黄色免费在线电影 | 欧美毛片在线观看 | 91成人一区 | 中文字幕线观看 | 911精品影院在线观看 | 国产精品久久久久国产精品三级 | 国产成人精品无人区一区 | 亚洲一区二区三区高清视频 | 在线成人免费网站 | 亚洲一级网站 | 亚洲片在线 | 在线观看免费污视频 | 久久96国产精品久久秘臀 | 欧美一级免费视频 | 性盈盈盈影院 | 国产一级桃视频播放 | 男女亲热网站 | 欧美一级免费在线观看 | 亚洲精品在线观看网站 | 99精品视频免费看 | 日韩大片在线永久观看视频网站免费 | 在线成人毛片 | 毛片在线免费 | 久青草免费视频 | 精品亚洲午夜久久久久91 | 日本免费不卡一区二区 | 亚洲国产午夜精品 | 视频在线91 | 成人福利电影在线观看 | 成人毛片免费视频 | 久草在线最新免费 | 久久色伦理资源站 | 欧美一区二区片 | 黄网站在线播放视频免费观看 | 国产精品久久久久久久久久东京 | 操你逼 | 欧美不卡 | 色污视频 | 毛片视频观看 |