使用 string.endswith 方法并传入 stringcomparison.ordinalignorecase 参数即可实现忽略大小写的后缀判断。该做法直接利用 .net 内置的比较逻辑,无需手动转换字符串大小写,既简洁又高效,能准确返回布尔值结果。

EndsWith 默认行为与忽略大小写的区别是什么
默认情况下 EndsWith 执行的是区分大小写的比较,只有当后缀字符完全一致时才返回 true。通过指定 OrdinalIgnoreCase 枚举值,可以强制进行基于代码点的忽略大小写匹配,从而让 "txt" 和 "TXT" 被视为相同。

using System;
class Program {
static void Main() {
string fileName = "report.TXT";
// 区分大小写:返回 false
bool caseSensitive = fileName.EndsWith(".txt");
Console.WriteLine($"Case Sensitive: {caseSensitive}");
// 忽略大小写:返回 true
bool caseInsensitive = fileName.EndsWith(".txt", StringComparison.OrdinalIgnoreCase);
Console.WriteLine($"Case Insensitive: {caseInsensitive}");
}
}
运行上述代码将输出:
Case Sensitive: False
Case Insensitive: True
如何处理空字符串或 null 输入的情况
在调用 EndsWith 时如果源字符串为 null 会抛出 NullReferenceException,而后缀字符串为 null 或空字符串时方法会安全地返回 true。为了避免运行时错误,应在调用前检查源字符串是否为 null 或空白。

using System;
class Program {
static void Main() {
string input1 = null;
string input2 = "";
string input3 = "file.doc";
string suffix = ".doc";
// 安全判断封装
Console.WriteLine(SafeEndsWith(input1, suffix)); // False
Console.WriteLine(SafeEndsWith(input2, suffix)); // False
Console.WriteLine(SafeEndsWith(input3, suffix)); // True
}
static bool SafeEndsWith(string source, string value) {
if (string.IsNullOrEmpty(source)) return false;
return source.EndsWith(value, StringComparison.OrdinalIgnoreCase);
}
}
当后缀包含特殊字符时判断结果如何
即使后缀中包含点号、下划线等特殊字符,OrdinalIgnoreCase 依然能正确进行逐字符的忽略大小写比对。这些特殊字符不参与大小写转换逻辑,但会被作为普通字符参与匹配,确保路径或文件名后缀的精确识别。











