繁体   English   中英

如何在TypeScript / JavaScript中缩写驼峰式文本字符串

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM