首页 > 编程语言 >C# 之 String.Format详解

C# 之 String.Format详解

时间:2022-10-26 17:22:12浏览次数:47  
标签:index String format C# Format standard strings

https://blog.csdn.net/zhaocg00/article/details/124539625

因为Format方法接收的参数是Object类型,所以对于值类型会涉及到装箱的操作

下面通过一些例子来详细介绍string.Format的用法:

如果你想要往另外一个字符串中插入某个object、variable、或者expression的值,那么就可以尝试使用String.Format,例如下面的例子:

Decimal pricePerOunce = 17.36m
String s = String.Format("The current price is {0} per ounce", pricePerOunce);
Console.WriteLine(s);
// Result: The current price is 17.36 per ounce.
你也可以去控制 大括号里的值 的 格式:

Decimal pricePerOunce = 17.36m;
String s = String.Format("The current price is {0:C2} per ounce.", pricePerOunce);
Console.WriteLine(s);
// Result if current culture is en-US:
// The current price is $17.36 per ounce.
除了控制格式之外,你还可以控制 对齐(alignment) 和 间隔 (spacing)

String.Format的参数列表中,先是一个格式化的字符串,后面跟要往该字符串指定位置(即 { } 的位置)中插入的对象或者表达式(数量可以是任意多个,虽然String.Format提供了好几种重载方式,其实你并不用去关心究竟在用哪一个)。

大括号里可以写数字,对应了这些待插入项的序号(即第几个),例如:

string s = String.Format("At {0}, the temperature is {1}°C.", DateTime.Now, 20.4);
Console.WriteLine(s);
// Output similar to: 'At 4/10/2015 9:29:41 AM, the temperature is 20.4°C.'
控制格式(Control Formating)

如上文所说,我们可以在大括号 { } 里通过添加数字来指定插入参数列表中的第几个数(例如 {0} ,表示格式化字符串后面的第一个参数),同时我们也可以在数字后面使用冒号‘:’再后缀一些符号来控制更具体一些的格式。

例如::d 提取了时间里的年月日 :t 提取了小时和分钟

string s = String.Format("It is now {0:d} at {0:t}", DateTime.Now);
Console.WriteLine(s);
// Output similar to: 'It is now 4/10/2015 at 10:04 AM'
这里读者可能会疑问:我咋知道有哪些字符串格式呢?确实这些格式化的种类还是比较多的,光靠记忆肯定是不行的,这里给出官方链接,按需要去查即可:

Standard numeric format strings​​​​​​

https://learn.microsoft.com/en-us/dotnet/standard/base-types/standard-numeric-format-strings

 

Standard date and time format strings | Microsoft Docs

https://learn.microsoft.com/en-us/dotnet/standard/base-types/standard-date-and-time-format-strings

 

Standard TimeSpan format strings | Microsoft Docs

https://learn.microsoft.com/en-us/dotnet/standard/base-types/standard-timespan-format-strings

 

Enumeration format strings | Microsoft Docs

https://learn.microsoft.com/en-us/dotnet/standard/base-types/enumeration-format-strings

 

你也可以使用一些格式的标识符(Format Specifier)来定制自己需要的格式类型

控制间距(Control Spacing)

你可以定义插入到目标字符串的字符串片段的宽度,例如,可以使用 {0,12} 表示插入的字符串的宽度为12

可以用于文本对齐,例如:

int[] years = { 2013, 2014, 2015 };
int[] population = { 1025632, 1105967, 1148203 };
var sb = new System.Text.StringBuilder();
sb.Append(String.Format("{0,6} {1,15}\n\n", "Year", "Population"));
for (int index = 0; index < years.Length; index++)
sb.Append(String.Format("{0,6} {1,15:N0}\n", years[index], population[index]));

Console.WriteLine(sb);

// Result:
// Year Population
//
// 2013 1,025,632
// 2014 1,105,967
// 2015 1,148,203
控制左右对齐 (Control Alignment)

默认是右对齐,可以使用 如 {0, -12} 来设置为左对齐:

int[] years = { 2013, 2014, 2015 };
int[] population = { 1025632, 1105967, 1148203 };
String s = String.Format("{0,-10} {1,-10}\n\n", "Year", "Population");
for(int index = 0; index < years.Length; index++)
s += String.Format("{0,-10} {1,-10:N0}\n",
years[index], population[index]);
Console.WriteLine($"\n{s}");
// Result:
// Year Population
//
// 2013 1,025,632
// 2014 1,105,967

————————————————
版权声明:本文为CSDN博主「KevinZhaocg」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/zhaocg00/article/details/124539625

标签:index,String,format,C#,Format,standard,strings
From: https://www.cnblogs.com/Dongmy/p/16829185.html

相关文章

  • react router6使用
    1.BrowserRouter说明:用于包裹整个应用。importReactfrom"react";importReactDOMfrom"react-dom";import{BrowserRouter}from"react-router-dom";ReactDO......
  • 图像处理:人群计数中密度图的生成——以ShanghaiTechA数据集为例
    1.前言记录密度图的生成,防止以后找不到。代码也是从别人那得来的2.高斯核模糊在生成伪装密度图时,使用如下公式:\[F(x)=\sum^N_{i=1}\delta(x-x_i)*G_{\sigma}(x)......
  • splic
    删除功能,第一个参数为第一项位置,第二个参数为要删除几个 插入功能,第一个参数(插入位置),第二个参数(0),第三个参数(插入的项)替换功能,第一个参数(起始位置),第二个参数(删除的项数),第......
  • websocket接口自动化集成pytest测试框架
    websocket协议1、介绍WebSocket是一种在单个TCP通信的协议。WebSocket通信协议于2011年被IETF定为标准RFC6455,并由RFC7936补充规范。WebSocketAPI也被W3C定为标准。We......
  • Java查询服务器(windows + linux)和系统各个指标数据 cpu、内存、硬盘、线程、请求错
    importjava.io.BufferedReader;importjava.io.File;importjava.io.IOException;importjava.io.InputStreamReader;importjava.lang.management.ManagementFactory......
  • 解决Mac安装Homebrew失败
    首先使用Homebrew官网的安装shell命令安装:/bin/bash-c"$(curl-fsSLhttps://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"会出现如下错误(或许是......
  • 如何通过 C#/VB.NET 重命名 Excel 表格并设置选项卡颜色
    在Excel文件中创建多个工作表可以使数据更加井然有序。例如,可以为不同的区域、不同的月份/年份或不同的项目等创建不同的工作表。但要区分多个工作表,则需要更改它们的名......
  • nacos——01
    nacosstarterpom依赖<!--nacosstarter--><dependency><groupId>com.alibaba.cloud</groupId><artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifact......
  • 精细化边缘安全防护:如何防止CDN域名被恶意刷量?
    :::hljs-center:::越是数字化时代,越要做好基建“安全”的顶层设计随着消费及产业互联网的不断发展,数字化将实现全场景覆盖,人类的生活和生产方式也随之不断改变。内......
  • keras分类猫狗数据(中)使用CNN分类模型
    ​​keras分类猫狗数据(上)数据预处理​​​​​​keras分类猫狗数据(中)使用CNN分类模型​​​​​​keras分类猫狗数据(下)迁移学习​​​​​​keras分类猫狗数据(番外篇)深度......