歡迎您光臨本站 註冊首頁

c# 字符串操作總結

←手機掃碼閱讀     lousu-xi @ 2020-06-11 , reply:0

字符串操作在任意編程語言的日常編程中都隨處可見,今天來彙總一下 C# 中關於字符串的一些你可能遺忘或遺漏的知識點。

逐字字符串
 

在普通字符串中,反斜槓字符是轉義字符。而在逐字字符串(Verbatim Strings)中,字符將被編程器按照原義進行解釋。使用逐字字符串只需在字符串前面加上 @ 符號。

  // 逐字字符串:轉義符  var filename = @"c:	emp ewfile.txt";  Console.WriteLine(filenaame);    // 逐字字符串:多行文本  var multiLine = @"This is a  multiline paragraph.";  Console.WriteLine(multiLine);    // 非逐字字符串  var escapedFilename = "c:	emp ewfile.txt";  Console.WriteLine(escapedFilename);

 

輸出:

c: emp ewfile.txt
 This is a
 multiline paragraph.
 c:    emp
 ewfile.txt

逐字字符串中唯一不被原樣解釋的字符是雙引號。由於雙引號是定義字符串的關鍵字符,所以在逐字字符串中要表達雙引號需要用雙引號進行轉義。

  varstr = @"""I don't think so"", he said.";  Console.WriteLine(str);  // 輸出:"I don't think so", he said.

 

在逐字字符串中也可以 $ 符號實現字符串內插值。

  Console.WriteLine($@"Testing   1 2 {5 - 2}");  // 輸出:Testing   1 2 3

 

數字格式化轉換

典型的的格式化方法為:

  string.Format("{index[:format]}", number)

 

可使用“0”和“#”佔位符進行補位。“0” 表示位數不夠位數就補充“0”,小數部分如果位數多了則會四捨五入;“#”表示佔位,用於輔助“0”進行補位。

標準格式化用法:

  // “0”描述:佔位符,如果可能,填充位  string.Format("{0:000000}",1234); // 結果:001234    // “#”描述:佔位符,如果可能,填充位  string.Format("{0:######}",1234); // 結果:1234  string.Format("{0:#0####}",1234); // 結果:01234  string.Format("{0:0#0####}",1234); // 結果:0001234    // "."描述:小數點  string.Format("{0:000.000}", 1234);    // 結果:1234.000  string.Format("{0:000.000}", 4321.12543); // 結果:4321.125    // ","描述:千分表示  string.Format("{0:0,0}", 1234567);  //結果:1,234,567    // "%"描述:格式化為百分數  string.Format("{0:0%}",1234);    // 結果:123400%  string.Format("{0:#%}", 1234.125);  // 結果:123413%  string.Format("{0:0.00%}",1234);   // 結果:123400.00%  string.Format("{0:#.00%}",1234.125); // 結果:123412.50%

 

內置快捷字母格式化用法:

  // E-科學計數法表示  (25000).ToString("E"); // 結果:2.500000E+004    // C-貨幣表示,帶有逗號分隔符,默認小數點後保留兩位,四捨五入  (2.5).ToString("C"); // 結果:¥2.50    // D[length]-十進制數  (25).ToString("D5"); // 結果:00025    // F[precision]-浮點數,保留小數位數(四捨五入)  (25).ToString("F2"); // 結果:25.00    // G[digits]-常規,保留指定位數的有效數字,四捨五入  (2.52).ToString("G2"); // 結果:2.5    // N-帶有逗號分隔符,默認小數點後保留兩位,四捨五入  (2500000).ToString("N"); // 結果:2,500,000.00    // X-十六進制,非整型將產生格式異常  (255).ToString("X"); // 結果:FF

 

ToString 也可以自定義補零格式化:

  (15).ToString("000");       // 結果:015  (15).ToString("value is 0");    // 結果:value is 15  (10.456).ToString("0.00");     // 結果:10.46  (10.456).ToString("00");      // 結果:10  (10.456).ToString("value is 0.0"); // 結果:value is 10.5

 

轉換為二進制、八進制、十六進制輸出:

  int number = 15;  Convert.ToString(number, 2); // 結果:1111  Convert.ToString(number, 8); // 結果:17  Convert.ToString(number, 16); // 結果:f

 

自定義格式化器:

  public class CustomFormat : IFormatProvider, ICustomFormatter  {    public string Format(string format, object arg, IFormatProvider formatProvider)    {      if (!this.Equals(formatProvider))      {        return null;      }      if (format == "Reverse")      {        return string.Join("", arg.ToString().Reverse());      }      return arg.ToString();    }      public object GetFormat(Type formatType)    {      return formatType == typeof(ICustomFormatter) ? this : null;    }  }

 

使用自定義格式化器:

  String.Format(newCustomFormat(), "-> {0:Reverse}  dlroW olleH <-

 

字符串拼接

將數組中的字符串拼接成一個字符串:

  var parts = new[] { "Foo", "Bar", "Fizz", "Buzz"};  var joined = string.Join(", ", parts);  // joined = "Foo, Bar, Fizz, Buzz"

 

以下四種方式都可以達到相同的字符串拼接的目的:

  string first = "Hello";  string second = "World";  string foo = first + " " + second;  string foo = string.Concat(first, " ", second);  string foo = string.Format("{0} {1}", firstname, lastname);  string foo = $"{firstname} {lastname}";

 

字符串內插法

簡單用法:

  var name = "World";  var str =$"Hello, {name}!";  // str = "Hello, World!"

 

帶日期格式化:

  var date = DateTime.Now;  var str = $"Today is {date:yyyy-MM-dd}!";

 

補齊格式化(Padding):

  var number = 42;    // 向左補齊  var str = $"The answer to life, the universe and everything is {number, 5}.";  // str = "The answer to life, the universe and everything is ___42." ('_'表示空格)    // 向右補齊  var str = $"The answer to life, the universe and everything is ${number, -5}.";  // str = "The answer to life, the universe and everything is 42___."

 

結合內置快捷字母格式化:

  var amount = 2.5;  var str = $"It costs {amount:C}";  // str = "¥2.50"    var number = 42;  var str = $"The answer to life, the universe and everything is {number, 5:f1}.";  // str = "The answer to life, the universe and everything is ___42.1"

                 

   


[lousu-xi ] c# 字符串操作總結已經有291次圍觀

http://coctec.com/docs/c/language/show-post-238091.html