trim_prefix
2026/4/14大约 3 分钟
最后同步日期:2026-04-15 | Godot 官方原文 — trim_prefix
trim_prefix
定义
trim_prefix 用来去掉字符串开头的指定前缀。你可以把它想象成"撕掉信封上的标签"——如果信封最前面贴着指定的标签,就撕掉;如果没有,信封原样不动。
比如 "res://assets/player.png".TrimPrefix("res://") 就会变成 "assets/player.png"。
函数签名
C#
// Godot.StringExtensions 方法
public static string TrimPrefix(this string instance, string prefix)GDScript
func trim_prefix(prefix: String) -> String参数说明
| 参数 | 类型 | 必需 | 说明 |
|---|---|---|---|
prefix | string / String | 是 | 要去除的前缀字符串。只有完全匹配开头时才会去除 |
返回值
类型: string / String
- 如果字符串以
prefix开头,返回去掉前缀后的新字符串 - 如果不以
prefix开头,返回原字符串(不做任何修改)
代码示例
基础用法
C#
using Godot;
public partial class TrimPrefixExample : Node
{
public override void _Ready()
{
// 去掉路径前缀
GD.Print("res://assets/player.png".TrimPrefix("res://"));
// 运行结果: assets/player.png
// 前缀不匹配时,原样返回
GD.Print("user://save.dat".TrimPrefix("res://"));
// 运行结果: user://save.dat
// 去掉协议前缀
GD.Print("https://example.com".TrimPrefix("https://"));
// 运行结果: example.com
}
}GDScript
extends Node
func _ready():
# 去掉路径前缀
print("res://assets/player.png".trim_prefix("res://"))
# 运行结果: assets/player.png
# 前缀不匹配时,原样返回
print("user://save.dat".trim_prefix("res://"))
# 运行结果: user://save.dat
# 去掉协议前缀
print("https://example.com".trim_prefix("https://"))
# 运行结果: example.com实际场景:处理不同路径协议
C#
using Godot;
public partial class PathProcessor : Node
{
public override void _Ready()
{
string[] paths = {
"res://scenes/main.tscn",
"res://assets/textures/bg.png",
"user://saves/save1.dat",
"C:\\Games\\config.ini"
};
foreach (string path in paths)
{
// 尝试去掉各种已知前缀
string cleanPath = path
.TrimPrefix("res://")
.TrimPrefix("user://")
.TrimPrefix("C:\\Games\\");
GD.Print($"{path} -> {cleanPath}");
}
// 运行结果:
// res://scenes/main.tscn -> scenes/main.tscn
// res://assets/textures/bg.png -> assets/textures/bg.png
// user://saves/save1.dat -> saves/save1.dat
// C:\Games\config.ini -> config.ini
}
}GDScript
extends Node
func _ready():
var paths := [
"res://scenes/main.tscn",
"res://assets/textures/bg.png",
"user://saves/save1.dat",
"C:\\Games\\config.ini"
]
for path in paths:
# 尝试去掉各种已知前缀
var clean_path := path \
.trim_prefix("res://") \
.trim_prefix("user://") \
.trim_prefix("C:\\Games\\")
print(path + " -> " + clean_path)
# 运行结果:
# res://scenes/main.tscn -> scenes/main.tscn
# res://assets/textures/bg.png -> assets/textures/bg.png
# user://saves/save1.dat -> saves/save1.dat
# C:\Games\config.ini -> config.ini进阶用法:去除标签前缀与安全检查
C#
using Godot;
public partial class TrimPrefixAdvanced : Node
{
public override void _Ready()
{
// 处理带标签的文本
string chat = "[ADMIN] Server maintenance in 5 minutes";
string prefix = "[ADMIN] ";
if (chat.StartsWith(prefix))
{
string message = chat.TrimPrefix(prefix);
GD.Print($"管理员消息: {message}");
}
// 运行结果: 管理员消息: Server maintenance in 5 minutes
// 空前缀 = 原样返回
GD.Print("hello".TrimPrefix(""));
// 运行结果: hello
// 前缀比原字符串长 = 原样返回
GD.Print("hi".TrimPrefix("hello world"));
// 运行结果: hi
// 与 trim_suffix 配合:去除首尾标记
string tagged = "**important**";
string content = tagged.TrimPrefix("**").TrimSuffix("**");
GD.Print(content);
// 运行结果: important
}
}GDScript
extends Node
func _ready():
# 处理带标签的文本
var chat := "[ADMIN] Server maintenance in 5 minutes"
var prefix := "[ADMIN] "
if chat.begins_with(prefix):
var message := chat.trim_prefix(prefix)
print("管理员消息: " + message)
# 运行结果: 管理员消息: Server maintenance in 5 minutes
# 空前缀 = 原样返回
print("hello".trim_prefix(""))
# 运行结果: hello
# 前缀比原字符串长 = 原样返回
print("hi".trim_prefix("hello world"))
# 运行结果: hi
# 与 trim_suffix 配合:去除首尾标记
var tagged := "**important**"
var content := tagged.trim_prefix("**").trim_suffix("**")
print(content)
# 运行结果: important注意事项
- 只去开头,只去一次:
trim_prefix只检查字符串的最开头是否匹配前缀,不会在字符串中间查找和删除。 - 必须完全匹配:前缀必须和字符串开头完全一致才会去除,哪怕差一个字符也不会去除。
- 区分大小写:
trim_prefix是区分大小写的。"Hello".TrimPrefix("hello")不会去除前缀。 - 不修改原字符串:返回新字符串,原字符串保持不变。
- 与
trim_suffix配对:trim_prefix去开头,trim_suffix去末尾。两者配合可以去除字符串首尾的标记。 - C# 的
TrimStart不同:C# 自带的TrimStart()是去除字符集中的任意字符,而TrimPrefix要求精确匹配整个前缀字符串。
