[英]How to Abbreviate camel-case text string in TypeScript / JavaScript
我有一些大的table.column名称需要缩写。 或者更确切地说,表名需要缩写。
采取以下table.col名称示例,以及它们的外观:
agentByState5Minutes.agentId ----> aBS5M.agentId
contactReasonByMail.agentName -----> cRBM.agentName
如您所见,表格名称是大小写和数字的混合。 在我的函数中,我将表名与列名分开,以使其更容易:
protected columnNameConvert(colName: string): string{
this.log.info('columnNameConvert:colName:'+ colName);
let colNameSplit: Array<string> = colName.split('.');
let tableName: string = colNameSplit[0];
let realColName: string = colNameSplit[1];
return colName;
}
可以使用正则表达式文本操作来缩写tableName吗?
我会用replace
匹配所有不是大写字母,数字或字符串开头的内容,同时还要查找.
并(在开头)检查位置是否不在字符串的开头:
const change = str => str.replace( /(?!^)[^AZ\\d](?=[^.]*\\.)/g, '' ); console.log( change('agentByState5Minutes.agentId'), // ----> aBS5M.agentId change('contactReasonByMail.agentName') // -----> cRBM.agentName );
(?!^)[^AZ\\d](?=[^.]*\\.)
表示:
(?!^)
-字符串开头的负向超前(确保此位置匹配项不在字符串开头) [^AZ\\d]
-除大写字母或数字外 (?=[^.]*\\.)
-确保匹配的字符最后跟随一个.
使用Typescript语法:
const columnNameConvert = (colName: string) => colName.replace(
/(?!^)[^A-Z\d](?=[^.]*\.)/g,
'',
);
(请记住,如果TS可以自己推断返回类型,则无需明确表示返回类型)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.