如$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
你还可以继续扩展,比如:
- 支持正则匹配
- 支持移除前缀
- 处理中文字符
等等需求。
总之封装成工具类可以让代码更通用,容易扩展。
本文暂时没有评论,来添加一个吧(●'◡'●)