时间:2021-05-20
字符串操作在任意编程语言的日常编程中都随处可见,今天来汇总一下 C# 中关于字符串的一些你可能遗忘或遗漏的知识点。
逐字字符串
在普通字符串中,反斜杠字符是转义字符。而在逐字字符串(Verbatim Strings)中,字符将被编程器按照原义进行解释。使用逐字字符串只需在字符串前面加上 @ 符号。
// 逐字字符串:转义符var filename = @"c:\temp\newfile.txt";Console.WriteLine(filenaame);// 逐字字符串:多行文本var multiLine = @"This is amultiline 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); // 结果:1234string.Format("{0:#0####}",1234); // 结果:01234string.Format("{0:0#0####}",1234); // 结果:0001234// "."描述:小数点string.Format("{0:000.000}", 1234); // 结果:1234.000string.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"); // 结果:FFToString 也可以自定义补零格式化:
(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); // 结果:1111Convert.ToString(number, 8); // 结果:17Convert.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#字符串操作的资料请关注其它相关文章!
声明:本页内容来源网络,仅供用户参考;我单位不保证亦不表示资料全面及准确无误,也不保证亦不表示这些资料为最新信息,如因任何原因,本网内容或者用户因倚赖本网内容造成任何损失或损害,我单位将不会负任何法律责任。如涉及版权问题,请提交至online#300.cn邮箱联系删除。
本文实例总结了C#常用的字符串截取函数用法。分享给大家供大家参考。具体分析如下:在C#中字符串截取函数包括有substring函数,Remove函数,index
JS模拟C#字符串格式化操作/*****功能:字符串格式化替换操作***/String.prototype.format=function(){varargs=
C#实现:复制代码代码如下:#region计算字符串相似度//////计算字符串相似度//////字符串1///字符串2///相似度publicstaticfl
本文实例讲述了C#生成不重复随机字符串类。分享给大家供大家参考。具体如下:这个C#类用于随机产生不重复的字符串,可以指定字符串范围,可以指定要产生字符串的长度u
本文实例总结了几个C#常用的自定义函数,非常实用。分享给大家供大家参考。具体如下:1.将数组转成字符串//////将数组转成字符串//////分隔符///要字符