c# 字符串操作总结
程序员文章站
2022-06-17 21:44:36
字符串操作在任意编程语言的日常编程中都随处可见,今天来汇总一下 c# 中关于字符串的一些你可能遗忘或遗漏的知识点。逐字字符串在普通字符串中,反斜杠字符是转义字符。而在逐字字符串(verbatim st...
字符串操作在任意编程语言的日常编程中都随处可见,今天来汇总一下 c# 中关于字符串的一些你可能遗忘或遗漏的知识点。
逐字字符串
在普通字符串中,反斜杠字符是转义字符。而在逐字字符串(verbatim strings)中,字符将被编程器按照原义进行解释。使用逐字字符串只需在字符串前面加上 @ 符号。
// 逐字字符串:转义符 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
逐字字符串中唯一不被原样解释的字符是双引号。由于双引号是定义字符串的关键字符,所以在逐字字符串中要表达双引号需要用双引号进行转义。
varstr = @"""i don't think so"", he said."; console.writeline(str); // 输出:"i don't think so", he said.
在逐字字符串中也可以 $ 符号实现字符串内插值。
console.writeline($@"testing \n 1 2 {5 - 2}"); // 输出:testing \n 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} <-", "hello world"); // 输出:-> 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"
以上就是c# 字符串操作总结的详细内容,更多关于c#字符串操作的资料请关注其它相关文章!