Carbon字符串 #
一、字符串概述 #
Carbon中的字符串是UTF-8编码的文本序列,使用 String 类型表示。字符串是不可变的,修改字符串会创建新的字符串对象。
二、字符串创建 #
2.1 字符串字面量 #
carbon
var s1: String = "Hello, Carbon!";
var s2: String = "你好,世界!";
var s3: String = ""; // 空字符串
2.2 多行字符串 #
carbon
var multiline: String = R"(
第一行
第二行
第三行
)";
2.3 原始字符串 #
carbon
// 原始字符串不处理转义
var raw: String = R"(C:\Users\Name\file.txt)";
var path: String = R"(\n不是换行符)";
2.4 从其他类型转换 #
carbon
var num: i32 = 42;
var str: String = String(num); // "42"
var f: f64 = 3.14;
var fstr: String = String(f); // "3.14"
var b: bool = true;
var bstr: String = String(b); // "true"
三、转义字符 #
3.1 常用转义 #
| 转义序列 | 含义 |
|---|---|
\n |
换行 |
\r |
回车 |
\t |
制表符 |
\\ |
反斜杠 |
\" |
双引号 |
\' |
单引号 |
\0 |
空字符 |
carbon
var s1: String = "第一行\n第二行";
var s2: String = "路径: C:\\Users\\Name";
var s3: String = "他说: \"Hello\"";
3.2 Unicode转义 #
carbon
var heart: String = "\u{2764}"; // ❤
var smile: String = "\u{1F600}"; // 😀
四、字符串操作 #
4.1 拼接 #
carbon
var first: String = "Hello";
var last: String = "World";
// 使用 + 运算符
var full: String = first + ", " + last + "!"; // "Hello, World!"
// 使用 += 运算符
var greeting: String = "Hello";
greeting += " ";
greeting += "Carbon"; // "Hello Carbon"
4.2 重复 #
carbon
var s: String = "Abc";
var repeated: String = s * 3; // "AbcAbcAbc"
4.3 长度 #
carbon
var s: String = "Hello, 世界!";
var len: i32 = s.Length(); // 字符数: 10
var bytes: i32 = s.ByteLength(); // 字节数: 12
4.4 访问字符 #
carbon
var s: String = "Hello";
// 通过索引访问
var first: String = s[0]; // "H"
var second: String = s[1]; // "e"
// 负索引(从末尾)
var last: String = s[-1]; // "o"
4.5 切片 #
carbon
var s: String = "Hello, World!";
var sub1: String = s[0..5]; // "Hello"
var sub2: String = s[7..12]; // "World"
var sub3: String = s[7..]; // "World!"
var sub4: String = s[..5]; // "Hello"
五、字符串查找 #
5.1 包含检查 #
carbon
var s: String = "Hello, World!";
var has_hello: bool = s.Contains("Hello"); // true
var has_hi: bool = s.Contains("Hi"); // false
5.2 查找位置 #
carbon
var s: String = "Hello, World!";
var pos: i32 = s.Find("World"); // 7
var pos2: i32 = s.Find("xyz"); // -1 (未找到)
var last_pos: i32 = s.FindLast("o"); // 8
5.3 前缀后缀 #
carbon
var s: String = "Hello, World!";
var starts: bool = s.StartsWith("Hello"); // true
var ends: bool = s.EndsWith("World!"); // true
六、字符串修改 #
6.1 替换 #
carbon
var s: String = "Hello, World!";
var new_s: String = s.Replace("World", "Carbon");
// "Hello, Carbon!"
var multi: String = "aaa".Replace("a", "b");
// "bbb"
6.2 大小写转换 #
carbon
var s: String = "Hello, World!";
var upper: String = s.ToUpper(); // "HELLO, WORLD!"
var lower: String = s.ToLower(); // "hello, world!"
6.3 去除空白 #
carbon
var s: String = " Hello, World! ";
var trimmed: String = s.Trim(); // "Hello, World!"
var left: String = s.TrimLeft(); // "Hello, World! "
var right: String = s.TrimRight(); // " Hello, World!"
6.4 分割与连接 #
carbon
// 分割
var s: String = "a,b,c";
var parts: [String] = s.Split(","); // ["a", "b", "c"]
// 连接
var words: [String] = ("Hello", "World");
var joined: String = String.Join(" ", words); // "Hello World"
七、字符串格式化 #
7.1 格式化字符串 #
carbon
var name: String = "Carbon";
var version: i32 = 1;
var s1: String = "语言: {0}, 版本: {1}".Format(name, version);
// "语言: Carbon, 版本: 1"
var s2: String = "你好,{0}!".Format("世界");
// "你好,世界!"
7.2 格式化说明符 #
carbon
var num: i32 = 42;
var f: f64 = 3.14159;
// 宽度和对齐
var s1: String = "{0:10}".Format(num); // " 42" (右对齐,宽度10)
var s2: String = "{0:<10}".Format(num); // "42 " (左对齐)
var s3: String = "{0:>10}".Format(num); // " 42" (右对齐)
// 浮点精度
var s4: String = "{0:.2f}".Format(f); // "3.14"
var s5: String = "{0:.5f}".Format(f); // "3.14159"
// 进制
var s6: String = "{0:x}".Format(num); // "2a" (十六进制)
var s7: String = "{0:b}".Format(num); // "101010" (二进制)
var s8: String = "{0:o}".Format(num); // "52" (八进制)
7.3 Print格式化 #
carbon
var name: String = "Carbon";
var count: i32 = 100;
Print("名称: {0}", name);
Print("数量: {0}", count);
Print("名称: {0}, 数量: {1}", name, count);
八、字符串比较 #
8.1 相等比较 #
carbon
var s1: String = "Hello";
var s2: String = "Hello";
var s3: String = "World";
var eq: bool = s1 == s2; // true
var ne: bool = s1 != s3; // true
8.2 字典序比较 #
carbon
var s1: String = "Apple";
var s2: String = "Banana";
var lt: bool = s1 < s2; // true
var gt: bool = s1 > s2; // false
var le: bool = s1 <= s2; // true
var ge: bool = s1 >= s2; // false
8.3 比较方法 #
carbon
var s1: String = "Hello";
var s2: String = "hello";
// 区分大小写比较
var cmp: i32 = s1.Compare(s2); // < 0 (s1 < s2)
// 不区分大小写比较
var eq: bool = s1.EqualsIgnoreCase(s2); // true
九、字符串与字符 #
9.1 字符类型 #
carbon
var c: char = 'A';
var emoji: char = '😀';
// 字符操作
var upper: char = c.ToUpper(); // 'A'
var lower: char = c.ToLower(); // 'a'
9.2 字符串转字符数组 #
carbon
var s: String = "Hello";
var chars: [char] = s.Chars(); // ['H', 'e', 'l', 'l', 'o']
// 遍历字符
for (c in s) {
Print("{0}", c);
}
9.3 字符数组转字符串 #
carbon
var chars: [char] = ('H', 'i');
var s: String = String(chars); // "Hi"
十、正则表达式 #
10.1 基本匹配 #
carbon
var s: String = "Hello123";
// 匹配数字
var has_digit: bool = s.Match("\\d+"); // true
// 匹配字母
var has_alpha: bool = s.Match("[A-Za-z]+"); // true
10.2 查找匹配 #
carbon
var s: String = "abc123def456";
// 查找所有数字
var matches: [String] = s.FindAll("\\d+");
// ["123", "456"]
10.3 替换 #
carbon
var s: String = "Hello 123 World 456";
// 替换数字
var result: String = s.ReplaceAll("\\d+", "X");
// "Hello X World X"
十一、字符串构建器 #
11.1 使用StringBuilder #
carbon
var sb: StringBuilder = StringBuilder();
sb.Add("Hello");
sb.Add(", ");
sb.Add("World");
sb.Add("!");
var result: String = sb.ToString(); // "Hello, World!"
11.2 高效拼接 #
carbon
// 对于大量拼接,使用StringBuilder更高效
var parts: [String] = ("a", "b", "c", "d", "e");
var sb: StringBuilder = StringBuilder();
for (part in parts) {
sb.Add(part);
}
var result: String = sb.ToString();
十二、最佳实践 #
12.1 选择合适的字符串类型 #
carbon
// 短字符串:直接使用String
var name: String = "Carbon";
// 大量拼接:使用StringBuilder
var sb: StringBuilder = StringBuilder();
for (i in 0..1000) {
sb.Add("item");
}
// 常量字符串:使用let
let AppName: String = "MyApp";
12.2 避免不必要的转换 #
carbon
// 不好:多次转换
var s: String = String(num);
Print("{0}", s);
// 好:直接格式化
Print("{0}", num);
12.3 使用原始字符串处理路径 #
carbon
// 不好:需要转义
var path1: String = "C:\\Users\\Name\\file.txt";
// 好:使用原始字符串
var path2: String = R"(C:\Users\Name\file.txt)";
十三、总结 #
本章我们学习了:
- 字符串创建:字面量、多行、原始字符串
- 转义字符:常用转义、Unicode转义
- 字符串操作:拼接、切片、长度
- 字符串查找:包含、位置、前后缀
- 字符串修改:替换、大小写、去除空白
- 字符串格式化:格式化字符串、说明符
- 字符串比较:相等、字典序
- 正则表达式:匹配、查找、替换
接下来让我们学习Carbon的布尔类型!
最后更新:2026-03-27