let str = "big_animal_and_more"
let output = str.replace(/(^\w)/g, g => g[0].toUpperCase()).replace(/([-_]\w)/g, g => " " + g[1].toUpperCase()).trim();
console.log(output);
/**
* String Converter to convert snake_case to Title Case
* Eg.
* - quick_brown_fox -> Quick Brown Fox
* - quick_brown____fox -> Quick Brown Fox
* - quick_brown_fox----jumps_over -> Quick Brown Fox Jumps Over
*
*/
const convertSnakeToTitleCase = (s: string): string =>
s
.replace(/^[-_]*(.)/, (_, c: string) => c.toUpperCase())
.replace(/[-_]+(.)/g, (_, c: string) => ' ' + c.toUpperCase());
字符串 这是基于JEST的测试
import { convertSnakeToTitleCase } from './helpers';
describe('convertSnakeToTitleCase helper function unit tests', () => {
it('returns correct output for regular snake case string', () => {
expect(convertSnakeToTitleCase('quick_brown_fox')).toBe('Quick Brown Fox');
});
it('returns correct output for snake case strings with consecutive underscores', () => {
expect(convertSnakeToTitleCase('quick_brown_____fox')).toBe(
'Quick Brown Fox'
);
});
it('returns correct output for snake case strings with hyphen separated strings', () => {
expect(convertSnakeToTitleCase('quick_brown_fox-----jumps_over')).toBe(
'Quick Brown Fox Jumps Over'
);
});
});
4条答案
按热度按时间9avjhtql1#
另一个普通的正则表达式版本:
字符串
这个版本处理多个连续的下划线。它对第一个字符(或带前导下划线的字符)和多个下划线后面的字符进行单独的匹配,并在后者中添加一个空格。
更新
经过反思,我认为用两个regex replaces来做这件事会更好:
型
此变体还增加了对烤肉串情况的处理。
ckocjqey2#
首先用下划线分隔字符串,然后将第一个字母大写。
字符串
jslywgbw3#
如果你想坚持使用正则表达式方法。
字符串
dxxyhpgq4#
下面是基于上述解决方案的类型脚本等效物
字符串
这是基于JEST的测试
型