C#中关于函数 string Format(string format, object arg0)

C#中关于函数 string Format(string format, object arg0),第1张

不知道你知不知道。stringformat(string,object);

看看代码就清楚了

using System;

class Sample

{

enum Color {Yellow = 1, Blue, Green};

static DateTime thisDate = DateTimeNow;

public static void Main()

{

// Store the output of the StringFormat method in a string

string s = "";

ConsoleClear();

ConsoleWriteLine("Standard DateTime Format Specifiers");

s = StringFormat(

"(s) Sortable: {0:s}\n" +

thisDate);

ConsoleWriteLine(s);

ConsoleWriteLine("Standard Enumeration Format Specifiers");

s = StringFormat(

"(G) General: {0:G}\n" +

" (default): {0} (default = 'G')\n" +

"(F) Flags: {0:F} (flags or integer)\n" +

"(D) Decimal number: {0:D}\n" +

"(X) Hexadecimal: {0:X}\n",

ColorGreen);

ConsoleWriteLine(s);

}

}

先说说使用Stringformat方法来输出字符串的优势,我们可以回想一下我们刚开始学习Java时,对于不确定具体内容的参数,往往是使用字符串拼接的方式来进行输出的,比如说像下面这种:

我们可以看到,使用上面这种方式我们确实可以完成打印的需求,但是字符串拼接过程中其实是创建了一些我们不需要用到的字符串对象的。所以,面对这种不确定参数内容的场景,String类提供format的格式化方法来帮助我们解决这个问题。

format方法的核心在于对占位符的使用,我们可以预先定义好一个字符串的模板,有了模板之后我们只需要提供参数就行,底层会帮助我们把参数替换到对应的占位符中。我们以上面的案例为例,做一个小优化:

定义的模板字符串为: %s今年%d岁了,收到了%f块零花钱 ,其中第一个 %s 表示会将传入的第一个字符串参数替换掉 %s 这个占位符,对于 %d 和 %f 也是一样,分别表示整数类型和浮点类型的占位符。

从输出结果看,我们可以发现和之前使用字符串拼接的效果一模一样,但是使用format方法却有更多的好处:

(1) 参数更加明确 ,我们可以更加方便的找到输出的元素(在多参数的输出上会体现的更加明显)

(2) 降低了产生的无用内存对象

下面我们将对format方法中常用的占位符进行介绍:

其中我们用的比较多的,一般是字符串、整数、浮点、日期相关的占位符多一些。

我们以上面的占位符为例做一个小例子:

我们使用这些特殊的占位符来做一个小测试:

我们在常用占位符的介绍中提到了可以通过 %tx 的方式来定义日期占位符,其中 x 就需要我们再根据需要填入对应的日期格式。

同样的,我们根据上面提供的日期占位符来做一个简单的例子:

我们可以看到,我们定义的模板字符串为: today is %1$tY-%1$tm-%1$td ,理论上我们需要填入三个参数,但实际上我们只提供了1个日期类,原因是当1个参数会在模板字符串中多次使用时,我们可以使用 数字$ 的方式来对指定位置的参数进行替换。比如说 1$ 表示的就是这里将使用第1个参数进行替换。

同时,还需要注意,我们的索引占位符 数字$ 是需要写在%之后的,否则会识别错误。

至此,对于Stringformat方法我们就介绍到这里。

StringFormat和WriteLine都遵守同样的格式化规则。格式化的格式如下:"", arg1, argN,在这个格式中:

1) N是从0开始的整数,表示要格式化的参数的个数

2) M是一个可选的整数,表示格式化后的参数所占的宽度,如果M是负数,那么格式化后的值就是左对齐的,如果M是正数,那么格式化后的值是右对齐的

3) formatString是另外一个可选的参数,表示格式代码

字母 含义

C或c Currency 货币格式

D或d Decimal 十进制格式(十进制整数,不要和Net的Decimal数据类型混淆了)

E或e Exponent 指数格式

F或f Fixed point 固定精度格式

G或g General 常用格式

N或n 用逗号分割千位的数字,比如1234将会被变成1,234

P或p Percentage 百分符号格式

R或r Round-trip 圆整(只用于浮点数)保证一个数字被转化成字符串以后可以再被转回成同样的数字

X或x Hex 16进制格式

string str=stringFormat("",1234,12,1,10);的输出是这样的

1234 ¥1200 ¥100 ¥1000

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/langs/12459923.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-05-23
下一篇2023-05-23

发表评论

登录后才能评论

评论列表(0条)

    保存