c# 字符串操作总结
字符串操作在任意编程语言的日常编程中都随处可见,今天来汇总一下 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#字符串操作的资料请关注猪先飞其它相关文章!
相关文章
- 我们在使用C#做项目的时候,基本上都需要制作登录界面,那么今天我们就来一步步看看,如果简单的实现登录界面呢,本文给出2个例子,由简入难,希望大家能够喜欢。...2020-06-25
- 这篇文章主要介绍了C# 字段和属性的的相关资料,文中示例代码非常详细,供大家参考和学习,感兴趣的朋友可以了解下...2020-11-03
- 以前我们开发大型项目时都会用到svn来同步,因为开发产品的人过多,所以我们会利用软件来管理,今天发有一居然可以利用php来管理svn哦,好了看看吧。 代码如下 ...2016-11-25
- 这篇文章主要介绍了C#中截取字符串的的基本方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧...2020-11-03
- 本文给大家分享C#连接SQL数据库和查询数据功能的操作技巧,本文通过图文并茂的形式给大家介绍的非常详细,需要的朋友参考下吧...2021-05-17
- 这篇文章主要介绍了C#实现简单的Http请求的方法,以实例形式较为详细的分析了C#实现Http请求的具体方法,需要的朋友可以参考下...2020-06-25
- 本文主要介绍了C#中new的几种用法,具有很好的参考价值,下面跟着小编一起来看下吧...2020-06-25
使用Visual Studio2019创建C#项目(窗体应用程序、控制台应用程序、Web应用程序)
这篇文章主要介绍了使用Visual Studio2019创建C#项目(窗体应用程序、控制台应用程序、Web应用程序),小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧...2020-06-25- 这篇文章主要介绍了C#开发Windows窗体应用程序的简单操作步骤,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...2021-04-12
- 这篇文章介绍了C#判断字符串是否数字或字母的实例,有需要的朋友可以参考一下...2020-06-25
- 这篇文章主要介绍了C#从数据库读取图片并保存的方法,帮助大家更好的理解和使用c#,感兴趣的朋友可以了解下...2021-01-16
- 这篇文章主要介绍了PostgreSQL判断字符串是否包含目标字符串的多种方法,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下...2021-02-23
- 这篇文章主要介绍了C++ string常用截取字符串方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧...2020-04-25
- 最近做一个小项目不可避免的需要前端脚本与后台进行交互。由于是在asp.net中实现,故问题演化成asp.net中jiavascript与后台c#如何进行交互。...2020-06-25
- 这篇文章主要用实例讲解C#递归算法的概念以及用法,文中代码非常详细,帮助大家更好的参考和学习,感兴趣的朋友可以了解下...2020-06-25
- 本文通过例子,讲述了C++调用C#的DLL程序的方法,作出了以下总结,下面就让我们一起来学习吧。...2020-06-25
- 轻松学习C#的基础入门,了解C#最基本的知识点,C#是一种简洁的,类型安全的一种完全面向对象的开发语言,是Microsoft专门基于.NET Framework平台开发的而量身定做的高级程序设计语言,需要的朋友可以参考下...2020-06-25
- 本文主要介绍了C#变量命名规则小结,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下...2021-09-09
- 这篇文章主要介绍了c#中(&&,||)与(&,|)的区别详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧...2020-06-25
- 这篇文章主要介绍了C#绘制曲线图的方法,以完整实例形式较为详细的分析了C#进行曲线绘制的具体步骤与相关技巧,具有一定参考借鉴价值,需要的朋友可以参考下...2020-06-25