c# 字符串操作总结
作者:Liam Wang 发布时间:2022-03-16 05:59:25
标签: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"
来源:https://www.cnblogs.com/willick/p/13035697.html


猜你喜欢
- 一、理解 “ 服务器 / 浏览器 ”沟通流程(3步)第1步:浏览器使用<img src=&qu
- 具体代码如下所示:public class Parent { public static int a = parentStati
- 1.准备工作1、新建一个SpringBoot项目加上web依赖, 所有依赖<dependency><groupId>
- Java是一门天然的面向对象的语言。而所有我们手动创造出来的类,都继承于同一个类,即Object类。可以看一下Object类的结构nativ
- 蔡勒公式 蔡勒(Zeller)公式:是一个计算星期的公式。随便给一个日期,就能用这个公式推算出是星期几。蔡勒公式如下:W = [
- 核心代码迁移相对顺利,大致流程如下:一、创建项目 1) cd cocos2d-x-3.0rc0;&nbs
- 前言关键字Final不仅可以用来修饰变量,而且对类及其方法的继承也有很大的影响,本文将从类与方法两个方面介绍final关键字的功能。Fina
- 引言HDFS Balancer工具可以用来分析块的分布情况,并且可以重新分配DataNode中的数据。本文通过为您介绍如何使用HDFS Ba
- Android 将view 转换为Bitmap出现空指针问题解决办法在做Android 项目的时候,有时候可能有这样的需求,将一个View
- 为了方便客户抓取Log,现通过TCP协议连接指定服务器,传输指定内容,定义指定目录,IP,PORT字段接收参数。直接上代码 public s
- 本文实例为大家分享了C#实现飞行棋小游戏的具体代码,供大家参考,具体内容如下逻辑图 以下是掷色子的一个代码,比较有代表性,里面的逻
- 自动完成文本框(AutoCompleteTextView),用于实现允许用户输入一定字符后,显示一个下拉菜单,供用户从中选择,当用户选择某个
- 一:JTextField的(文本框)使用:JTextField 是一个轻量级组件,它允许编辑单行文本。1.JTextField的常用构造方法
- C# using 三种使用方式介绍1.using指令。using + 命名空间名字,这样可以在程序中直接用命令空间中的类型,而不必指定类型的
- 本文实例讲述了spring AOP的Around增强实现方法。分享给大家供大家参考,具体如下:一 配置<?xml version=&q
- 在C#当中,利用WebClient这个核心类,可以轻易的打造一个下载器。但是这里想要强调的是,我们用的是异步操作。所谓异步,是相对于同步的概
- 实现方式和继承方式有什么区别呢?*区别:*继承Thread:线程代码存放在Thread子类run方法中*实现Runnable:线程代码存放在
- Jenkins是一个开源软件项目,旨在提供一个开放易用的软件平台,使软件的持续集成变成可能Jenkins是基于Java开发的一种持续集成工具
- 查询返回Map<String,Object>类型mybatis 查询返回Map<String,Object> 类型,
- /// 构造随机数 种子static int GetRandomSeed(){ byte[] byt