目录
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 |
\0 | null | 0x0000 |
\a | 警报 | 0x0007 |
\b | 退格(Backspace) | 0x0008 |
\f | 换页 | 0x000C |
\n | 换行 | 0x000A |
\r | 回车(Enter) | 0x000D |
\t | 水平制表符 | 0x0009 |
\v | 垂直制表符 | 0x000B |
\u | Unicode 转义序列 (UTF-16) | \uHHHH (范围:0000 – FFFF;示例:\u00E7 =“ç”) |
\U | Unicode 转义序列 (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