编程开源技术交流,分享技术与知识

网站首页 > 开源技术 正文

ts 封装一个公共函数,处理字符串中去掉末尾带有Name

wxchong 2024-08-24 01:40:15 开源技术 9 ℃ 0 评论

如$2Name 得到$2, NameName得到Name。

可以使用正则表达式匹配和替换:

function removeNameSuffix(str: string): string {
  return str.replace(/Name$/, ''); 
}

console.log(removeNameSuffix('$2Name')); // "$2"
console.log(removeNameSuffix('NameName')); // "Name"

解释下这个正则表达式:

  • Name 匹配字面上的 Name 字符串
  • $ 匹配字符串的结尾
  • /Name$/ 这样就可以匹配以 Name 结尾的字符串了
  • .replace(/Name$/, '') 替换匹配到的部分为空字符串

所以这样可以删除字符串结尾的 Name。

需要注意的是:

  • 如果字符串本身就是 Name,是不会删除的
  • 如果中间包含 Name,也不会误删除

匹配得很精确。

你还可以根据实际需求调整正则表达式,比如不区分大小写。


可以进一步封装成一个工具类,支持更多配置:

interface RemoveSuffixOptions {
  suffix: string;
  caseInsensitive?: boolean;
}

class StringHelper {

  static removeSuffix(str: string, options: RemoveSuffixOptions) {
    let suffix = options.suffix;
    if (options.caseInsensitive) {
      // 使后缀不区分大小写
      suffix = new RegExp(suffix, 'i'); 
    }

    return str.replace(new RegExp(suffix + '#39;, 'i'), '');
  }

}

// 使用示例
StringHelper.removeSuffix('fooName', {
  suffix: 'Name'  
}); 

StringHelper.removeSuffix('fooName', {
  suffix: 'name',
  caseInsensitive: true   
});
  • 支持传入更多配置选项,比如是否区分大小写
  • 使用类封装静态方法,更像一个工具类
  • 支持移除任意后缀,不仅仅是 Name

你还可以继续扩展,比如:

  • 支持正则匹配
  • 支持移除前缀
  • 处理中文字符

等等需求。

总之封装成工具类可以让代码更通用,容易扩展。

Tags:

本文暂时没有评论,来添加一个吧(●'◡'●)

欢迎 发表评论:

最近发表
标签列表