String.Format 方法的几种定义:
String.Format (String, Object) 将指定的 String 中的格式项替换为指定的 Object 实例的值的文本等效项。
String.Format (String, Object[]) 将指定 String 中的格式项替换为指定数组中相应 Object 实例的值的文本等效项。
String.Format (IFormatProvider, String, Object[]) 将指定 String 中的格式项替换为指定数组中相应 Object 实例的值的文本等效项。指定的参数提供区域性特定的格式设置信息。
String.Format (String, Object, Object) 将指定的 String 中的格式项替换为两个指定的 Object 实例的值的文本等效项。
String.Format (String, Object, Object, Object) 将指定的 String 中的格式项替换为三个指定的 Object 实例的值的文本等效项。
/// <summary>
/// 字符串操作知识点汇总
/// </summary>
public class CommonStringTools
{
public void RunTest()
{
//逐字字符串:转义符
var fileName = @"c:\temp\newfile.txt";
Console.WriteLine(fileName);
//逐字字符串:多行文本
var multiLine = @"This is a
multiline paragraph.";
Console.WriteLine(multiLine);
// 非逐字字符串
var escapedFileName = "c:\temp\newfile.txt";
Console.WriteLine(escapedFileName);
//逐字字符串中唯一不被原样解释的字符是双引号。由于双引号是定义字符串的关键字,所以在逐字字符串中要表达双引号需要双引号进行转移。
var str = @"""I don't think so"",he said.";
Console.WriteLine(str);
//在逐字字符串中也可以 $ 符号实现字符串内插值
Console.WriteLine($@"Testing \n 1 2 {5 - 2}");
//数字格式化方法为:
//string.Format("{index[:format]}", number);
//“#”描述:占位符,如果可能,填充位
Console.WriteLine(string.Format("{0:######}", 1234));//=>1234
Console.WriteLine(string.Format("{0:000000}", 1234));//=>001234
Console.WriteLine(string.Format("{0:#0####}", 1234));//=>01234
Console.WriteLine(string.Format("{0:0#0####}", 1234));//=>0001234
//“."描述:小数点
Console.WriteLine(string.Format("{0:000.000}", 1234));//=>1234.000
Console.WriteLine(string.Format("{0:000.000}", 4321.12543));//=>4321.125
//“,”描述:千分表示
Console.WriteLine(string.Format("{0:0,0}", 1234567));//=>1,234,567
//“%”描述:格式化为百分数
Console.WriteLine(string.Format("{0:0%}", 1234));//=>123400%;
Console.WriteLine(string.Format("{0:#%}", 1234.125));//=>123413%
Console.WriteLine(string.Format("{0:0.00%}", 1234));//=>123400.00%
Console.WriteLine(string.Format("{0:#.00%}", 1234.125));//=>123412.50%
//内置快捷字母格式化用法
//E-科学计数法表示
Console.WriteLine((25000).ToString("E"));//=>2.500000E+004
//C-货币表示,带有逗号分隔符,默认小数点后保留两位,四舍五入
Console.WriteLine((2.5).ToString("C"));//=>¥2.50
//D[length]-十进制数
Console.WriteLine((25).ToString("D5"));//=>00025
// F[precision]-浮点数,保留小数位数(四舍五入)
Console.WriteLine((25).ToString("F2"));//=>2.52
// G[digits]-常规,保留指定位数的有效数字,四舍五入
Console.WriteLine((2.52).ToString("G2"));//=>2.5
// N- 带有逗号分隔符,默认小数点后保留两位,四舍五入
Console.WriteLine((2500000).ToString("N"));//=>2,500,000.00
// X- 十六进制,非整形将产生格式异常
Console.WriteLine((255).ToString("X"));//=>FF
//ToString也可以自定义补零格式化
Console.WriteLine((15).ToString("000"));//=>015
Console.WriteLine((15).ToString("value is 0"));//=> value is 15
Console.WriteLine((10.456).ToString("0.00"));//=>10.46
Console.WriteLine((10.456).ToString("00"));//=>10
Console.WriteLine((10.456).ToString("value si 0.0"));//=>10.5
//转化为二进制、八进制、十六进制输出
int number = 15;
Console.WriteLine(Convert.ToString(number, 2));//=>1111
Console.WriteLine(Convert.ToString(number, 8));//=>17
Console.WriteLine(Convert.ToString(number, 16));//=>f
//使用自定义格式化器
var s = string.Format(new CustomFormat(), "-> {0:Reverse} <-", "Hello World");
Console.WriteLine(s);//=> -> dlroW olleH <-
//字符串拼接
//将数组中的字符串拼接成一个字符串
var parts = new[] { "Foo", "Bar", "Fizz", "Buzz" };
var joined = string.Join(", ", parts);
Console.WriteLine(joined);//=>Foo, Bar, Fizz, Buzz
//以下四种方式都可以达到相同的字符串拼接的目的
string first = "Hello";
string second = "World";
Console.WriteLine(first + " " + second);//=>Hello World
Console.WriteLine(string.Concat(first, " ", second));//=>Hello World
Console.WriteLine(string.Format("{0} {1}", first, second));//=>Hello World
Console.WriteLine($"{first} {second}");//=>Hello World
//字符串内插法
var name = "World";
Console.WriteLine($"Hello,{name}");//Hello,World
//带有日期格式化
var date = DateTime.Now;
Console.WriteLine($"Today is {date:yyyy-MM-dd}");
//补齐格式化 (padding)
var num = 42;
//向左补齐
Console.WriteLine($"The num is {num,5}.");//=>The num is 42.
//向右补齐
Console.WriteLine($"The num is {num,-5}.");//=>The num is 42 .
//组合内置快捷字母格式化
var amount = 2.5;
Console.WriteLine($"It costs {amount:C}");//=>It costs ¥2.50
Console.WriteLine($"The num is {num,5:f1}.");//=>The num is 42.0.
}
}
//自定义格式化器
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;
}
}
常用的几种实例
1、字符串的数字格式
string str1 =string.Format("{0:N1}",56789); //result: 56,789.0
string str2 =string.Format("{0:N2}",56789); //result: 56,789.00
string str3 =string.Format("{0:N3}",56789); //result: 56,789.000
string str8 =string.Format("{0:F1}",56789); //result: 56789.0
string str9 =string.Format("{0:F2}",56789); //result: 56789.00
string str11 =(56789 / 100.0).ToString("#.##"); //result: 567.89
string str12 =(56789 / 100).ToString("#.##"); //result: 567
string str = string.Format("{0:f2}", .2); //result: 0.20
2、格式化货币(跟系统的环境有关,中文系统默认格式化人民币,英文系统格式化美元)
代码如下:
string.Format("{0:C}",0.2)
结果为:¥0.20
(英文操作系统结果:$0.20
)
默认格式化小数点后面保留两位小数,如果需要保留一位或者更多,可以指定位数
代码如下:
string.Format("{0:C1}",23.15)
结果为:¥23.2
(截取会自动四舍五入)
格式化多个Object实例
代码如下:
string.Format("市场价:{0:C},优惠价{1:C}",23.15,19.82)
3、格式化十进制的数字(格式化成固定的位数,位数不能少于未格式化前,只支持整形)
string.Format("{0:D3}",23) //结果为:023
string.Format("{0:D2}",1223) //结果为:1223,(精度说明符指示结果字符串中所需的最少数字个数。)
4、用分号隔开的数字,并指定小数点后的位数
string.Format("{0:N}", 14200) //结果为:14,200.00 (默认为小数点后面两位)
string.Format("{0:N3}", 14200.2458) //结果为:14,200.246 (自动四舍五入)
5、格式化百分比
string.Format("{0:P}", 0.24583) //结果为:24.58% (默认保留百分的两位小数)
string.Format("{0:P1}", 0.24583) //结果为:24.6% (自动四舍五入)
6、零占位符和数字占位符
string.Format("{0:0000.00}", 12394.039) //结果为:12394.04
string.Format("{0:0000.00}", 194.039) //结果为:0194.04
string.Format("{0:###.##}", 12394.039) //结果为:12394.04
string.Format("{0:####.#}", 194.039) //结果为:194
7、日期格式化
string.Format("{0:d}",System.DateTime.Now) //结果为:2009-3-20 (月份位置不是03)
string.Format("{0:D}",System.DateTime.Now) //结果为:2009年3月20日
string.Format("{0:f}",System.DateTime.Now) //结果为:2009年3月20日 15:37
string.Format("{0:F}",System.DateTime.Now) //结果为:2009年3月20日 15:37:52
string.Format("{0:g}",System.DateTime.Now) //结果为:2009-3-20 15:38
string.Format("{0:G}",System.DateTime.Now) //结果为:2009-3-20 15:39:27
string.Format("{0:m}",System.DateTime.Now) //结果为:3月20日
string.Format("{0:t}",System.DateTime.Now) //结果为:15:41
string.Format("{0:T}",System.DateTime.Now) //结果为:15:41:50
更详细的说明请下面微软对此的说明或者上msdn上查询。
网友评论