c# 字符串操作总结
字符串操作在任意编程语言的日常编程中都随处可见,今天来汇总一下C#中关于字符串的一些你可能遗忘或遗漏的知识点。
逐字字符串
在普通字符串中,反斜杠字符是转义字符。而在逐字字符串(VerbatimStrings)中,字符将被编程器按照原义进行解释。使用逐字字符串只需在字符串前面加上@符号。
//逐字字符串:转义符 varfilename=@"c:\temp\newfile.txt"; Console.WriteLine(filenaame); //逐字字符串:多行文本 varmultiLine=@"Thisisa multilineparagraph."; Console.WriteLine(multiLine); //非逐字字符串 varescapedFilename="c:\temp\newfile.txt"; Console.WriteLine(escapedFilename);
输出:
c:\temp\newfile.txt
Thisisa
multilineparagraph.
c: emp
ewfile.txt
逐字字符串中唯一不被原样解释的字符是双引号。由于双引号是定义字符串的关键字符,所以在逐字字符串中要表达双引号需要用双引号进行转义。
varstr=@"""Idon'tthinkso"",hesaid."; Console.WriteLine(str); //输出:"Idon'tthinkso",hesaid.
在逐字字符串中也可以$符号实现字符串内插值。
Console.WriteLine($@"Testing\n12{5-2}"); //输出:Testing\n123
数字格式化转换
典型的的格式化方法为:
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("valueis0");//结果:valueis15 (10.456).ToString("0.00");//结果:10.46 (10.456).ToString("00");//结果:10 (10.456).ToString("valueis0.0");//结果:valueis10.5
转换为二进制、八进制、十六进制输出:
intnumber=15; Convert.ToString(number,2);//结果:1111 Convert.ToString(number,8);//结果:17 Convert.ToString(number,16);//结果:f
自定义格式化器:
publicclassCustomFormat:IFormatProvider,ICustomFormatter { publicstringFormat(stringformat,objectarg,IFormatProviderformatProvider) { if(!this.Equals(formatProvider)) { returnnull; } if(format=="Reverse") { returnstring.Join("",arg.ToString().Reverse()); } returnarg.ToString(); } publicobjectGetFormat(TypeformatType) { returnformatType==typeof(ICustomFormatter)?this:null; } }
使用自定义格式化器:
String.Format(newCustomFormat(),"->{0:Reverse}<-","HelloWorld"); //输出:->dlroWolleH<-
字符串拼接
将数组中的字符串拼接成一个字符串:
varparts=new[]{"Foo","Bar","Fizz","Buzz"}; varjoined=string.Join(",",parts); //joined="Foo,Bar,Fizz,Buzz"
以下四种方式都可以达到相同的字符串拼接的目的:
stringfirst="Hello"; stringsecond="World"; stringfoo=first+""+second; stringfoo=string.Concat(first,"",second); stringfoo=string.Format("{0}{1}",firstname,lastname); stringfoo=$"{firstname}{lastname}";
字符串内插法
简单用法:
varname="World"; varstr=$"Hello,{name}!"; //str="Hello,World!"
带日期格式化:
vardate=DateTime.Now; varstr=$"Todayis{date:yyyy-MM-dd}!";
补齐格式化(Padding):
varnumber=42; //向左补齐 varstr=$"Theanswertolife,theuniverseandeverythingis{number,5}."; //str="Theanswertolife,theuniverseandeverythingis___42."('_'表示空格) //向右补齐 varstr=$"Theanswertolife,theuniverseandeverythingis${number,-5}."; //str="Theanswertolife,theuniverseandeverythingis42___."
结合内置快捷字母格式化:
varamount=2.5; varstr=$"Itcosts{amount:C}"; //str="¥2.50" varnumber=42; varstr=$"Theanswertolife,theuniverseandeverythingis{number,5:f1}."; //str="Theanswertolife,theuniverseandeverythingis___42.1"
以上就是c#字符串操作总结的详细内容,更多关于C#字符串操作的资料请关注毛票票其它相关文章!