c# 字符串操作总结

所属分类: 软件编程 / C#教程 阅读数: 119
收藏 0 赞 0 分享

字符串操作在任意编程语言的日常编程中都随处可见,今天来汇总一下 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#开发word批量转pdf源码分享

已经安装有Office环境,借助一些简单的代码即可实现批量Word转PDF,看下面的实例源码吧
收藏 0 赞 0 分享

c# xml API操作的小例子

这篇文章主要介绍了c# xml API操作的小例子,有需要的朋友可以参考一下
收藏 0 赞 0 分享

c#唯一值渲染实例代码

这篇文章主要介绍了c#唯一值渲染实例代码,有需要的朋友可以参考一下
收藏 0 赞 0 分享

淘宝IP地址库采集器c#代码

这篇文章主要介绍了淘宝IP地址库采集器c#代码,有需要的朋友可以参考一下
收藏 0 赞 0 分享

C#在后台运行操作(BackgroundWorker用法)示例分享

BackgroundWorker类允许在单独的专用线程上运行操作。如果需要能进行响应的用户界面,而且面临与这类操作相关的长时间延迟,则可以使用BackgroundWorker类方便地解决问题,下面看示例
收藏 0 赞 0 分享

c#文本加密程序代码示例

这是一个加密软件,但只限于文本加密,加了窗口控件的滑动效果,详细看下面的代码
收藏 0 赞 0 分享

c#生成站点地图(SiteMapPath)文件示例程序

这篇文章主要介绍了c#生成站点地图(SiteMapPath)文件的示例,大家参考使用
收藏 0 赞 0 分享

C# 键盘Enter键取代Tab键实现代码

这篇文章主要介绍了C# 键盘Enter键取代Tab键实现代码,有需要的朋友可以参考一下
收藏 0 赞 0 分享

C# WinForm导出Excel方法介绍

在.NET应用中,导出Excel是很常见的需求,导出Excel报表大致有以下三种方式:Office PIA,文件流和NPOI开源库,本文只介绍前两种方式
收藏 0 赞 0 分享

C#串口通信程序实例详解

在.NET平台下创建C#串口通信程序,.NET 2.0提供了串口通信的功能,其命名空间是System.IO.Ports,创建C#串口通信程序的具体实现是如何的呢?让我们开始吧
收藏 0 赞 0 分享
查看更多