专栏首页GreenLeavesC#核编之格式化编程

C#核编之格式化编程

一、格式化控制台输入输出

    1、 在前面的随笔中,会经常看到诸如{0},{1}之类的标记嵌入在字符串变量中。.NET引入一种字符串格式化的新风格。与C的printf()相似,简而言之,如果需要定义一个字符串字面量,其中包含一些运行时才能知道其值的数值片段,可以使用花括号语法在文本内部指定占位符,在运行时,值会传递到Console.WriteLine()来代替每一个占位符。

注:如果唯一编号的占位符的数量比后面填充的参数数量多,则会抱一个格式异常,如果比填充的参数少,没有使用的参数就会被忽略!

代码如下:

Console.WriteLine("this is {0},that is {1}","apple","banana");

    2、在一个字符串中可以重复给定一个占位符(占位符可以是一样的),如果说你是一个甲壳虫乐队的爱好者,想建立一个字符串"9,number 9,number 9"。代码如下:

Console.WriteLine("{0},Number {0},Number {0}","9");

如上代码所示,占位符是可以重复的,当然也不需要按照递增的次序,如下代码就可以说明:

Console.WriteLine("{1},{0},{2}",10,20,30);//输出:20,10,30

二、格式化数值数据

1、在控制台应用程序中用Console.WriteLine()方法来格式化数据

            StringBuilder str = new StringBuilder();
            str.AppendFormat("中国的货币符号是{0:c}", 999);//输出:¥999.00   将目标数值转换成以当地货币形式的数值
            str.AppendFormat("格式化十进制数,用于指定填充值的最小个数{0:d9}",999);// 输出:000000999    {0:d9}--->0代表参数的顺序,d9代表将10进制数的位数设置成9位,不够用0补
            str.AppendFormat("小数点格式化,也用于填充指定值的小数个数{0:f3}", 999.9994);//输出:999.000     {0:f3}--->0代表参数的顺序,f3代表将999的小数位数设置成3位,没有小数的话用0补,多于3位的话,删除多余的位数
            str.AppendFormat("将普通数字转换成指数{0:e}", 999);//输出:9.990000e+002   {0:e}--->0代表参数的顺序,e代表将该数字转换成指数形式
            str.AppendFormat("将普通数字转换成指数{0:n}", 66666666);//输出:66,666,666.00    用于基本的数值格式化(带逗号)
            str.AppendFormat("将普通数字转换成指数{0:x}", 66666666);//输出:3f940aa   将目标数值16进制化
            Console.WriteLine(str);

2、在控制台应用程序之外格式化数值数据

.NET字符串格式化字符不局限与在控制台应用程序中使用,同样的格式化语法可以在调用string.format()使用,如果我们需要对任何应用程序类型(例如桌面GUI程序、ASP.NET WEB应用程序)在运行时组合文本数据,这个方法就很有用。

string.format()返回一个新的字符串对象,修改用户提供的字符串对象和该对象提供的标志进行格式化。代码如下:

string userMessage=string.Format("100000 in hex is  {0:x}",100000);
Console.WriteLine(userMessage);//输出:100000 in hex is 186a0

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • C#核编之System.Console类

          顾名思义,Console类封装了基于控制台的输入输出和错误流的操作,下面列举一些System.Console类常用的成员的,这些成员能为简单的命令行...

    郑小超.
  • State状态模式

    在日常开发中,某些对象的状态如果发生改变,对应的行为也将发生改变,那么如何在运行时根据对象的状态动态的改变对象的行为,同时不产生紧耦合关系(即使用if else...

    郑小超.
  • FactoryMethod工厂方法模式(创建型模式)

    整个抽象的游戏设施建造系统相对变化较慢,本例中只有一个Build的创建方法,而Build内部的方法实现,该实现依赖与各种具体的实现,而这些实现变化的非常频繁,现...

    郑小超.
  • Spring 中控制 Bean 生命周期的几种方式及 BeanPostProcessor 执行原理

    这两个类都是接口,其中 InitializingBean 有一个抽象方法 afterPropertiesSet ,DisposableBean 有一个抽象方法 ...

    wsuo
  • P2P网贷信用评分项目分享(一)

    此项目为kaggle竞赛平台的give me some credits。其目的是预测银行用户违约概率,以辅助银行判断是否要对用户进行放贷。关于风险控制建模的大致...

    用户2769421
  • 第三个万能芯片探针ID注释平台R包

    前面我们提到过表达芯片探针注释的3种方法,参见:第一个万能芯片探针ID注释平台R包, 并且帮助大家搞定了第一种bioconductor包的方法,大家无需下载几十...

    生信技能树
  • WPF 中使用附加属性,将任意 UI 元素或控件裁剪成圆形(椭圆)

    发布于 2018-06-15 01:22 更新于 2018-09...

    walterlv
  • Linux中利用grep命令如何检索文件内容详解

    Linux系统中搜索、查找文件中的内容,一般最常用的是grep命令,另外还有egrep命令,同时vi命令也支持文件内容检索。下面来一起看看Linux利用grep...

    砸漏
  • 大厂面试与工作中常见的正则表达式题目

    1.采用字面量的写法新建的正则表达式对象在代码编译时就会生成,是平常开发中常用的方式;

    前端迷
  • 正则表达式

    小胖

扫码关注云+社区

领取腾讯云代金券