C#如何将自定义字符串方法改造为可像string内置方法一样调用
实现字符串自定义清理方法的链式调用方案
你需要将现有方法封装为string类型的扩展方法,即可实现和.NET内置字符串方法一致的调用体验,具体调整步骤如下:
代码调整方案
1. 定义静态扩展方法容器类
创建一个独立的静态类(和控制台项目的Program类平级,不要嵌套在其他类内部),专门用于存放字符串相关的扩展方法:
using System; using System.Text.RegularExpressions; // 静态类是扩展方法的必须容器 public static class StringExtensions { // 预编译正则实例,避免每次调用重复初始化,提升性能 private static readonly Regex _multiWhitespaceRegex = new Regex(@"\s{2,}", RegexOptions.Compiled); // 扩展方法:第一个参数加this修饰,代表对string类型做扩展 public static string ToFriendlyDOSNameString(this string input) { // 新增空值兼容,避免空引用异常,符合内置方法的行为逻辑 if (string.IsNullOrEmpty(input)) return input; input = input.Normalize() .Replace("\\", " ") .Replace("/", " ") .Replace("\"", " ") .Replace("*", " ") .Replace(":", " ") .Replace("?", " ") .Replace("<", " ") .Replace(">", " ") .Replace("|", " ") .Replace("!", " ") .Replace(".", " ") .Replace("'", " ") .Trim(); // 直接用正则替换所有连续多空格为单空格,省去原有循环逻辑,性能更优 return _multiWhitespaceRegex.Replace(input, " "); } }
2. 调用方式
扩展方法定义完成后,即可完全按照你期望的形式调用,和string.Trim()等内置方法用法完全一致:
string example = "Some Random/Text:With<Illegal>Chars! And Multi Spaces "; example = example.ToFriendlyDOSNameString(); // 处理后结果:Some Random Text With Illegal Chars And Multi Spaces
注意事项
- 如果你将
StringExtensions类放在了自定义命名空间下,需要在使用扩展方法的代码文件顶部添加对应的using 你的命名空间;语句,才能正常调用扩展方法。
内容的提问来源于stack exchange,提问作者Mxpsth
相关产品推荐
相关产品推荐

