right
2026/4/14大约 3 分钟
最后同步日期:2026-04-15 | Godot 官方原文 — right
right
定义
right 用来从一个字符串的右边(末尾)截取指定数量的字符。你可以把它想象成"从队伍最后面往前数 N 个人出来":"Hello".Right(3) 就是取最后 3 个字符,得到 "llo"。
如果要求的数量超过字符串长度,就返回整个字符串。
函数签名
C#
// Godot.StringExtensions 方法
public static string Right(this string instance, int length)GDScript
func right(length: int) -> String参数说明
| 参数 | 类型 | 必需 | 说明 |
|---|---|---|---|
length | int | 是 | 要从右边截取的字符数量。必须是非负数 |
返回值
类型: string / String
返回从字符串末尾起最后 length 个字符组成的新字符串。如果 length 大于字符串长度,返回原字符串。
代码示例
基础用法
C#
using Godot;
public partial class RightExample : Node
{
public override void _Ready()
{
string text = "Hello, Godot!";
GD.Print(text.Right(6));
// 运行结果: Godot!
GD.Print(text.Right(0));
// 运行结果: (空字符串)
GD.Print(text.Right(100));
// 运行结果: Hello, Godot!(超出长度,返回全部)
}
}GDScript
extends Node
func _ready():
var text := "Hello, Godot!"
print(text.right(6))
# 运行结果: Godot!
print(text.right(0))
# 运行结果: (空字符串)
print(text.right(100))
# 运行结果: Hello, Godot!(超出长度,返回全部)实际场景:提取文件扩展名和路径后缀
C#
using Godot;
public partial class RightExample2 : Node
{
public override void _Ready()
{
// 从路径中提取最后几级目录
string path = "res://assets/textures/environment/trees/oak.png";
string lastThree = path.Right(8); // "oak.png"
GD.Print($"文件名: {lastThree}");
// 获取坐标系的后缀(2D/3D)
string nodeType = "CharacterBody3D";
string dimension = nodeType.Right(2);
GD.Print($"维度: {dimension}");
// 运行结果:
// 文件名: oak.png
// 维度: 3D
}
}GDScript
extends Node
func _ready():
# 从路径中提取最后几级目录
var path := "res://assets/textures/environment/trees/oak.png"
var last_three := path.right(8) # "oak.png"
print("文件名: " + last_three)
# 获取坐标系的后缀(2D/3D)
var node_type := "CharacterBody3D"
var dimension := node_type.right(2)
print("维度: " + dimension)
# 运行结果:
# 文件名: oak.png
# 维度: 3D进阶用法:结合 find 和 left/right 实现字符串切片
C#
using Godot;
public partial class RightAdvanced : Node
{
public override void _Ready()
{
// 提取域名后缀
string url = "https://www.evocosmos.com";
int lastDot = url.RFind("."); // 从右查找最后一个点
if (lastDot != -1)
{
string tld = url.Right(url.Length - lastDot - 1);
GD.Print($"顶级域名: {tld}");
}
// 运行结果: 顶级域名: com
// 提取名字的姓氏(最后一个词)
string fullName = "张 三 李 四";
int lastSpace = fullName.RFind(" ");
if (lastSpace != -1)
{
string lastName = fullName.Right(fullName.Length - lastSpace - 1);
GD.Print($"名: {lastName}");
}
// 运行结果: 名: 四
// 与 left 配合提取中间部分
string data = "[start]important data[end]";
string middle = data.Left(data.Length - 5).Right(data.Length - 7);
GD.Print($"中间内容: {middle}");
// 运行结果: 中间内容: important data
}
}GDScript
extends Node
func _ready():
# 提取域名后缀
var url := "https://www.evocosmos.com"
var last_dot := url.rfind(".") # 从右查找最后一个点
if last_dot != -1:
var tld := url.right(url.length() - last_dot - 1)
print("顶级域名: " + tld)
# 运行结果: 顶级域名: com
# 提取名字的姓氏(最后一个词)
var full_name := "张 三 李 四"
var last_space := full_name.rfind(" ")
if last_space != -1:
var last_name := full_name.right(full_name.length() - last_space - 1)
print("名: " + last_name)
# 运行结果: 名: 四
# 与 left 配合提取中间部分
var data := "[start]important data[end]"
var middle := data.left(data.length() - 5).right(data.length() - 7)
print("中间内容: " + middle)
# 运行结果: 中间内容: important data注意事项
- 参数必须非负:传入负数会导致未定义行为。如果不确定长度,请先检查。
- 不修改原字符串:
right返回一个新字符串,原字符串保持不变。 - 超出长度时安全返回:如果
length大于字符串长度,不会报错,而是返回整个字符串。 - 与
left互补:left从开头截取,right从末尾截取。两者可以配合使用来提取字符串中间的部分。 - C# 替代方案:C# 中可以用
Substring(str.Length - length)实现类似功能,但Right更简洁直观。
