使用 substring 方法结合 lastindexof 或 endswith 判断,可以安全地移除字符串结尾的固定长度内容。核心做法是:先确认字符串是否以目标后缀结尾(可选),然后计算新长度(原长度减去要截取的长度),调用 str.substring(0, newlength) 获取结果。若字符串长度不足截取长度,需处理异常或返回空串。

如何安全截取已知长度的后缀?
直接调用 Substring(0, length - suffixLength) 即可。前提是确保 length >= suffixLength,否则抛出 ArgumentOutOfRangeException。实际开发中建议先检查长度或捕获异常。

using System;
class Program
{
static void Main()
{
string input = "HelloWorld";
int suffixLen = 5; // 去掉 "World"
if (input.Length >= suffixLen)
{
string result = input.Substring(0, input.Length - suffixLen);
Console.WriteLine(result); // 输出: Hello
}
else
{
Console.WriteLine("Input too short");
}
}
}
预期结果:当输入为 HelloWorld 且截取长度为 5 时,输出 Hello。若输入为 Hi,则输出 Input too short。
如何仅在后缀匹配时进行截取?
使用 EndsWith 验证后缀,再执行截取。这样可避免误删非目标后缀的内容。例如,只有当字符串以 .txt 结尾时才去掉这4个字符。

using System;
class Program
{
static void Main()
{
string[] inputs = { "file.txt", "file.doc", "file" };
string suffix = ".txt";
foreach (var input in inputs)
{
if (input.EndsWith(suffix))
{
string result = input.Substring(0, input.Length - suffix.Length);
Console.WriteLine($"{input} -> {result}");
}
else
{
Console.WriteLine($"{input} -> unchanged");
}
}
}
}
预期结果:file.txt -> filefile.doc -> unchangedfile -> unchanged
如果字符串长度小于要截取的长度会发生什么?
会抛出 ArgumentOutOfRangeException。因此必须在调用 Substring 前检查 input.Length >= suffixLength,或使用 TryParse 风格的逻辑包裹。这是实现健壮代码的关键条件。











