開發(fā)程序過程中择懂,去處理格式化的內(nèi)容輸出是很常見的,無論你開發(fā)控制臺程序另玖,Web應(yīng)用還是移動開發(fā)都有類似的場景困曙。
C#6中微軟引入了新的字符串操作符($)幫助開發(fā)者們簡單的操作字符串文本。
本文中谦去,我用幾個例子幫助理解這個操作符慷丽。
我們想下這個例子,兩個數(shù)相加并打印它們的結(jié)果鳄哭。非常簡單的例子要糊,下面是C#中老的實現(xiàn)方式
打開https://try.dot.net/ 這個C#的在線編譯工具,可以看運行結(jié)果妆丘。 后面的例子都可以復(fù)制內(nèi)容編輯器锄俄,然后點Run查看運行結(jié)果。
using System;
using System.Collections.Generic;
using System.Linq;
public class Program
{
public static void Main()
{
int a = 2, b = 3, sum = a + b;
Console.Write("The sum of " + a + " and " + b + " is " + sum);
}
}
這個代碼輸出如下內(nèi)容
The sum of 2 and 3 is 5
我相信大多數(shù)人不會同意這個代碼勺拣,因為字符拼接總是痛苦的珊膜,有更好的選擇。讓我們使用 String.format 來組織代碼
using System;
using System.Collections.Generic;
using System.Linq;
public class Program
{
public static void Main()
{
int a = 2, b = 3, sum = a + b;
Console.Write(String.Format("The sum of {0} and {1} is {2}", a, b, sum));
}
}
對于大多數(shù)開發(fā)人員來說宣脉,這是首選方法(在 C# 6 之前)。它生成的輸出與前面的語句完全相同剔氏。
我相信塑猖,當(dāng)處理相對較大的字符串和更多的參數(shù)時,這也是痛苦的谈跛。參數(shù)的順序和在代碼塊中的使用總是從開發(fā)人員那里竊取一些時間羊苟。插值特殊字符 ($) 可幫助開發(fā)人員以更好的方式編寫代碼。
請考慮以下示例感憾。
using System;
using System.Collections.Generic;
using System.Linq;
public class Program
{
public static void Main()
{
int a = 2, b = 3, sum = a + b;
Console.Write($"The sum of {a} and 蜡励 is {sum}");
}
}
此代碼還會生成與前兩個完全相同的結(jié)果。您會注意到代碼是多么容易和可讀阻桅。$ 符號使字符串成為可插值的字符串凉倚。解析后,大括號 ({}) 內(nèi)的表達(dá)式將被相應(yīng)的表達(dá)式結(jié)果替換嫂沉』酷!趟章。
下面的示例杏糙。
using System;
using System.Collections.Generic;
using System.Linq;
public class Program
{
public static void Main()
{
Console.Write($"Today is {DateTime.Now.ToShortDateString()}");
}
}
會產(chǎn)生如下結(jié)果
Today is 8/10/2019
您可以將 $ 和 + 運算符組合在一個字符串中慎王。請參閱以下示例
using System;
using System.Collections.Generic;
using System.Linq;
public class Program
{
public static void Main()
{
String Username = "Mark Smith";
Decimal amount = 89.560m;
Console.Write($@"<pre>Dear {Username},Your Total Due for this month is {amount}.
Please settle the amount at the earliest.
</pre>");
}
}
此外,還可以指定字符串應(yīng)保留的最小空格數(shù)宏侍。默認(rèn)情況下赖淤,文本右對齊,對齊參數(shù)的負(fù)值將使其左對齊谅河。
下面的示例咱旱。
using System;
using System.Collections.Generic;
using System.Linq;
public class Program
{
public static void Main()
{
Console.Write($@"<pre>
9 x 1 = {9 * 1,2}
9 x 2 = {9 * 2,2}
9 x 3 = {9 * 3,2}
</pre>");
}
}
輸出的結(jié)果是
9 x 1 = 9
9 x 2 = 18
9 x 3 = 27
請參閱結(jié)果的對齊方式 (9,18旧蛾,27)莽龟,它是右對齊。如果使用 -2锨天,它將保持左對齊狀態(tài)毯盈。
還可以使用格式表達(dá)式設(shè)置表達(dá)式的格式。請考慮以下示例
using System;
using System.Collections.Generic;
using System.Linq;
public class Program
{
public static void Main()
{
Console.Write($"Today is {DateTime.Now: yyyy MM dd dddd}");
}
}
將會產(chǎn)生如下結(jié)果
Today is 2019 08 26 Monday
總結(jié)
插值特殊字符($)將幫助開發(fā)人員以更簡單病袄、更靈活的方式操作字符串搂赋。