left
2026/4/14大约 3 分钟
最后同步日期:2026-04-15 | Godot 官方原文 — left
left
定义
left 用来从一个字符串的左边(开头)截取指定数量的字符。你可以把它想象成"从一排队伍的最前面数 N 个人出来":"Hello".Left(3) 就是取前 3 个字符,得到 "Hel"。
如果要求的数量超过字符串长度,就返回整个字符串。
函数签名
C#
// Godot.StringExtensions 方法
public static string Left(this string instance, int length)GDScript
func left(length: int) -> String参数说明
| 参数 | 类型 | 必需 | 说明 |
|---|---|---|---|
length | int | 是 | 要从左边截取的字符数量。必须是非负数 |
返回值
类型: string / String
返回从字符串开头起前 length 个字符组成的新字符串。如果 length 大于字符串长度,返回原字符串。
代码示例
基础用法
C#
using Godot;
public partial class LeftExample : Node
{
public override void _Ready()
{
string text = "Hello, Godot!";
GD.Print(text.Left(5));
// 运行结果: Hello
GD.Print(text.Left(0));
// 运行结果: (空字符串)
GD.Print(text.Left(100));
// 运行结果: Hello, Godot!(超出长度,返回全部)
}
}GDScript
extends Node
func _ready():
var text := "Hello, Godot!"
print(text.left(5))
# 运行结果: Hello
print(text.left(0))
# 运行结果: (空字符串)
print(text.left(100))
# 运行结果: Hello, Godot!(超出长度,返回全部)实际场景:截取日期中的年份
C#
using Godot;
public partial class DateParser : Node
{
public override void _Ready()
{
string dateStr = "2026-04-15";
// 从左边截取前 4 个字符,得到年份
string year = dateStr.Left(4);
// 截取月份:先取前 7 个字符 "2026-04",再取后 2 个字符
string month = dateStr.Left(7).Right(2);
GD.Print($"日期: {dateStr}");
GD.Print($"年份: {year}");
GD.Print($"月份: {month}");
// 运行结果:
// 日期: 2026-04-15
// 年份: 2026
// 月份: 04
}
}GDScript
extends Node
func _ready():
var date_str := "2026-04-15"
# 从左边截取前 4 个字符,得到年份
var year := date_str.left(4)
# 截取月份:先取前 7 个字符 "2026-04",再取后 2 个字符
var month := date_str.left(7).right(2)
print("日期: " + date_str)
print("年份: " + year)
print("月份: " + month)
# 运行结果:
# 日期: 2026-04-15
# 年份: 2026
# 月份: 04进阶用法:结合 find 实现动态截取
C#
using Godot;
public partial class LeftAdvanced : Node
{
public override void _Ready()
{
// 截取到某个分隔符之前的所有内容
string email = "player@example.com";
int atPos = email.Find("@");
if (atPos != -1)
{
string username = email.Left(atPos);
GD.Print($"邮箱用户名: {username}");
}
// 运行结果: 邮箱用户名: player
// 截取 IP 地址的第一段
string ip = "192.168.1.100";
int dotPos = ip.Find(".");
string firstOctet = ip.Left(dotPos);
GD.Print($"IP 第一段: {firstOctet}");
// 运行结果: IP 第一段: 192
// C# 中的替代写法
string username2 = email.Substring(0, email.IndexOf('@'));
GD.Print($"C# 写法: {username2}");
// 运行结果: C# 写法: player
}
}GDScript
extends Node
func _ready():
# 截取到某个分隔符之前的所有内容
var email := "player@example.com"
var at_pos := email.find("@")
if at_pos != -1:
var username := email.left(at_pos)
print("邮箱用户名: " + username)
# 运行结果: 邮箱用户名: player
# 截取 IP 地址的第一段
var ip := "192.168.1.100"
var dot_pos := ip.find(".")
var first_octet := ip.left(dot_pos)
print("IP 第一段: " + first_octet)
# 运行结果: IP 第一段: 192注意事项
- 参数必须非负:传入负数会导致未定义行为。如果不确定长度,请先检查。
- 不修改原字符串:
left返回一个新字符串,原字符串保持不变。 - 超出长度时安全返回:如果
length大于字符串长度,不会报错,而是返回整个字符串。 - 与
right互补:left从开头截取,right从末尾截取。两者可以配合使用来提取字符串中间的部分。 - C# 替代方案:C# 中可以用
Substring(0, length)实现相同功能,但Left更简洁直观。
