3.6C#引用类型之字符串(String)

1.字符串声明

string 标识符 = "值";

2.获取字符串长度

a.Length

3.访问字符串

string str = "test";
char x = str[2];  // x = 's';

4.字符串连接

可使用 + 运算符 或 += 运算符连接字符串。

string userName = "<Type your name here>";
string dateString = DateTime.Today.ToShortDateString();
string str = "Hello " + userName + ". Today is " + dateString + ".";
str += " How are you today?";

5.字符串内插(Interpolation)

若要将字符串标识为字符串内插(Interpolation),可在该字符串 " 左引号前面加上 $ 美元符号( $ 和 " 之间不能有任何空格),然后在 " 左引号 与 " 右引号 之间插入各种形式的 {内插表达式}

5.1内插表达式形式

//负整数左对齐,正整数右对齐
//整数值代表宽度
{内插表达式[,±整数][:格式]}

5.2字符串内插

string name = "Mark";
var date = DateTime.Now;
Console.WriteLine($"Hello, {name}! Today is {date.DayOfWeek}, it's {date:HH:mm} now.");
// 输出:Hello, Mark! Today is Wednesday, it's 19:40 now.

5.3转义序列

var userName = "Jane";

//支持普通的字符串转义序列
var stringWithEscapes = $"C:\\Users\\{userName}\\Documents";
//以 $ 字符开头,后跟 @(原义) 字符
var verbatimInterpolated = $@"C:\Users\{userName}\Documents";
Console.WriteLine(stringWithEscapes);
Console.WriteLine(verbatimInterpolated);
// C:\Users\Jane\Documents
// C:\Users\Jane\Documents

//两个双引号不会被 @(原义) 输出
string s2 = $@"He said, ""This is the last \u0063hance\x0021""";
输出:He said, "This is the last \u0063hance\x0021"

//若要包含大括号 "{" 或 "}",在前面加两个大括号 "{{" 或 "}}"。
var xs = new int[] { 1, 2, 7, 9 };
var ys = new int[] { 7, 9, 12 };
Console.WriteLine($"Find the intersection of the {{{string.Join(", ",xs)}}} and {{{string.Join(", ",ys)}}} sets.");
// Find the intersection of the {1, 2, 7, 9} and {7, 9, 12} sets.

5.4三元条件运算符

因为冒号 (:) 在具有内插表达式的项中具有特殊含义,为了在内插表达式中使用三元条件运算符,请将内插表达式放在括号内。

var rand = new Random();
for (int i = 0; i < 7; i++)
{
    Console.WriteLine($"Coin flip: {(rand.NextDouble() < 0.5 ? "heads" : "tails")}");
}

6.复合格式字符串

复合格式字符串不需要加 $美元符号,{内插表达式} 为代表位置的整数索引。

强烈推荐使用字符串内插,因为字符串内插可用于任何字符串,而复合格式字符串必须调用 String.Format() 方法或支持复合格式字符串的其它方法,比如 Console.WriteLine() 或 StringBuilder.AppendFormat() 。

6.1内插表达式形式

//负整数左对齐,正整数右对齐
//整数值代表宽度
{索引[,±整数][:格式]}

6.2复合格式字符串

Console.WriteLine("Hello, {0}! Today is {1}, it's {2:HH:mm} now.", name, date.DayOfWeek, date);
// 同样地输出:Hello, Mark! Today is Wednesday, it's 19:40 now.

6.3转义序列

var userName = "Jane";

//支持普通的字符串转义序列
var stringWithEscapes = "C:\\Users\\{userName}\\Documents";
//字符串前加 @ 字符,表示原义输出
var verbatimInterpolated = @"C:\Users\{userName}\Documents";
Console.WriteLine(stringWithEscapes);
Console.WriteLine(verbatimInterpolated);
// C:\Users\Jane\Documents
// C:\Users\Jane\Documents

//两个双引号不会被 @(原义) 输出
string s2 = @"He said, ""This is the last \u0063hance\x0021""";
输出:He said, "This is the last \u0063hance\x0021"

//若要包含大括号 "{" 或 "}",在前面加一个大括号 "{" 或 "}"。
string result;
int nOpen = 1;
int nClose = 2;
result = String.Format("The text has {0} {{ characters and {1} }} characters.", 
nOpen, nClose);
Console.WriteLine(result);
//The text has 1 { characters and 2 } characters.

7.字符串转义序列

转义序列字符名称Unicode 编码
\'单引号0x0027
\"双引号0x0022
\\反斜杠0x005C
\0null0x0000
\a警报0x0007
\b退格(Backspace)0x0008
\f换页0x000C
\n换行0x000A
\r回车(Enter)0x000D
\t水平制表符0x0009
\v垂直制表符0x000B
\uUnicode 转义序列 (UTF-16)\uHHHH(范围:0000 – FFFF;示例:\u00E7 =“ç”)
\UUnicode 转义序列 (UTF-32)\U00HHHHHH(范围:000000 – 10FFFF;示例:\U0001F47D = “👽”)
\x除长度可变外,Unicode 转义序列与“\u”类似\xH[H][H][H](范围:0 – FFFF;示例:\x00E7\x0E7 或 \xE7 =“ç”)

原创文章,作者:huoxiaoqiang,如若转载,请注明出处:https://www.huoxiaoqiang.com/csharp/csharplang/7945.html

(0)
上一篇 2021年3月5日 22:21
下一篇 2021年3月6日 01:45

相关推荐

  • 2.3C#数据成员之字段(Field)

    字段是与类或类实例相关联的变量,字段定义存储位置。 1.字段声明和初始化 同变量。 2.字段分类 名称 修饰符 静态字段 用 static 修饰 实例字段 无 static 修饰 3.readonly修饰符 在字段声明中,readonly 修饰符表示只能 在声明期间初始化时或在同一个类的静态或实例构造函数中 …

    C#语言教程 2021年2月3日
    06020
  • 2.1C#语言的变量(Variable)

    1.变量声明和初始化 2.变量分类 x 是一个静态变量, y 它是一个实例变量,a 是一个值参数,b 是一个引用参数,c 是一个输出参数,v[0] 是一个数组元素,i 是一个局部变量。 2.1成员变量 名称 修饰符 静态变量 用 static 修饰 实例变量 无 static 修饰 2.2…

    C#语言教程 2021年2月1日
    04350
  • 3.3C#值类型之枚举(Enum)

    枚举声明 所有枚举继承自 System.Enum类(继承自 System.ValueType)。 枚举类型 定义了一组常量值。 每个 enum 类型都有一个基础类型(必须是八种整型类型之一)。默认情况下,枚举常量的基础类型为 int,它们从 0 开始,并按定义…

    C#语言教程 2021年3月3日
    05270

发表回复

登录后才能评论