字符串操作在任意编程语言的日常编程中都随处可见,今天来汇总一下 C# 中关于字符串的一些你可能遗忘或遗漏的知识点。
逐字字符串
在普通字符串中,反斜杠字符是转义字符。而在逐字字符串(Verbatim Strings)中,字符将被编程器按照原义进行解释。使用逐字字符串只需在字符串前面加上 @ 符号。
1
2
3
4
5
6
7
8
9
10
11
12
|
// 逐字字符串:转义符 var filename = @"c:\temp\newfile.txt" ; Console.WriteLine(filenaame); // 逐字字符串:多行文本 var multiLine = @"This is a multiline paragraph." ; Console.WriteLine(multiLine); // 非逐字字符串 var escapedFilename = "c:\temp\newfile.txt" ; Console.WriteLine(escapedFilename); |
输出:
c:\temp\newfile.txt
This is a
multiline paragraph.
c: emp
ewfile.txt
逐字字符串中唯一不被原样解释的字符是双引号。由于双引号是定义字符串的关键字符,所以在逐字字符串中要表达双引号需要用双引号进行转义。
1
2
3
|
varstr = @"""I don't think so"", he said." ; Console.WriteLine(str); // 输出:"I don't think so", he said. |
在逐字字符串中也可以 $ 符号实现字符串内插值。
1
2
|
Console.WriteLine($ @"Testing \n 1 2 {5 - 2}" ); // 输出:Testing \n 1 2 3 |
数字格式化转换
典型的的格式化方法为:
1
|
string .Format( "{index[:format]}" , number) |
可使用“0”和“#”占位符进行补位。“0” 表示位数不够位数就补充“0”,小数部分如果位数多了则会四舍五入;“#”表示占位,用于辅助“0”进行补位。
标准格式化用法:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
|
// “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% |
内置快捷字母格式化用法:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
|
// 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
也可以自定义补零格式化:
1
2
3
4
5
|
(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 |
转换为二进制、八进制、十六进制输出:
1
2
3
4
|
int number = 15; Convert.ToString(number, 2); // 结果:1111 Convert.ToString(number, 8); // 结果:17 Convert.ToString(number, 16); // 结果:f |
自定义格式化器:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
|
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 ; } } |
使用自定义格式化器:
1
2
|
String.Format(newCustomFormat(), "-> {0:Reverse} <-" , "Hello World" ); // 输出:-> dlroW olleH <- |
字符串拼接
将数组中的字符串拼接成一个字符串:
1
2
3
|
var parts = new [] { "Foo" , "Bar" , "Fizz" , "Buzz" }; var joined = string .Join( ", " , parts); // joined = "Foo, Bar, Fizz, Buzz" |
以下四种方式都可以达到相同的字符串拼接的目的:
1
2
3
4
5
6
|
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}" ; |
字符串内插法
简单用法:
1
2
3
|
var name = "World" ; var str =$ "Hello, {name}!" ; // str = "Hello, World!" |
带日期格式化:
1
2
|
var date = DateTime.Now; var str = $ "Today is {date:yyyy-MM-dd}!" ; |
补齐格式化(Padding):
1
2
3
4
5
6
7
8
9
|
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___." |
结合内置快捷字母格式化:
1
2
3
4
5
6
7
|
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" |
以上就是c# 字符串操作总结的详细内容,更多关于C#字符串操作的资料请关注服务器之家其它相关文章!
原文链接:https://www.cnblogs.com/willick/p/13035697.html