当前位置: 首页 > 后端技术 > Node.js

驼峰大小写、下划线、单复数、表名-类名转换……都交给字符串处理库:i

时间:2023-04-03 13:45:11 Node.js

经常有字符串转换处理场景,比如一个实体用户,对应的Restful资源name是复数users,数据库表名也是users,model类名可能是User等,这需要方便的npm包,名字有点奇怪,不过是单个字母:inpm:https://www.npmjs.com/package/i安装cnpminstalli--save就不一一列举了,直接看名字varinflect=require('i')();varinflect=require('i')(true);//如果传入一个`true`,相当于在String.prototype中添加了这些方法,所有的字符串都可以直接使用这些方法。//'要存储的消息'.titleize//==='要存储的消息'Pluralizeinflect.pluralize('person');//==='人'inflect.pluralize('章鱼');//==='octopi'inflect.pluralize('Hat');//==='帽子'Singularizeinflect.singularize('people');//==='person'inflect.singularize('octopi');//==='章鱼'inflect.singularize('帽子');//==='帽子'Camelizeinflect.camelize('message_properties');//==='MessageProperties'inflect.camelize('message_properties',false);//==='messageProperties'Underscoreinflect.underscore('MessageProperties');//==='message_properties'inflect.underscore('messageProperties');//==='message_properties'Humanizeinflect.humanize('message_id');//==='消息'Dasherizeinflect.dasherize('message_properties');//==='消息属性'inflect.dasherize('消息属性');//==='消息属性'Titleizeinflect.titleize('message_properties');//==='消息属性'inflect.titleize('要保留的消息属性');//==='要保留的消息属性'Demodulizeinflect.demodulize('Message.Bus.Properties');//==='Properties'Tableizeinflect.tableize('MessageBusProperty');//==='message_bus_properties'Classifyinflect.classify('message_bus_properties');//==='MessageBusProperty'外键inflect.foreign_key('MessageBusProperty');//==='message_bus_property_id'inflect.foreign_key('MessageBusProperty',false);//==='message_bus_propertyid'Ordinalizeinflect.ordinalize('1');//==='1st'自定义规则自定义复数可以使用正则表达式来自定义inflect.inflections.plural('person','guys');inflect.pluralize('person');//==='伙计们'inflect.singularize('伙计们');//==='guy'自定义单数inflect.inflections.singular('guys','person')inflect.singularize('guys');//==='person'inflect.pluralize('person');//==='people'Customirregularinflect.inflections.irregular('person','guys')inflect.pluralize('person');//==='伙计们'inflect.singularize('伙计们');//==='person'Customhumaninflect.inflections.human(/^(.*)_cnt$/i,'$1_count');inflect.inflections.humanize('jargon_cnt');//==='术语计数'自定义uncountableinflect.inflections.uncountable('oil')inflect.pluralize('oil');//==='油'inflect.singularize('油');//==='oil'前后端通用。。。就这样吧原文:https://adonis-china.org/post...