我想使用TypeScript将一个驼峰式字符串转换为蛇形式。
请记住,“蛇形式”是指每个空格都被下划线(_)字符替换,并且每个单词的第一个字母小写的格式样式。
例如:fieldName
转换为 field_name
应该是有效的转换,但 FieldName
转换为 Field_Name
是无效的。
我想使用TypeScript将一个驼峰式字符串转换为蛇形式。
请记住,“蛇形式”是指每个空格都被下划线(_)字符替换,并且每个单词的第一个字母小写的格式样式。
例如:fieldName
转换为 field_name
应该是有效的转换,但 FieldName
转换为 Field_Name
是无效的。
const camelToSnakeCase = str => str.replace(/[A-Z]/g, letter => `_${letter.toLowerCase()}`);
ItemName
=_item_name
。 - Badrulconst camel_to_snake = str => str[0].toLowerCase() + str.slice(1, str.length).replace(/[A-Z]/g, letter => `_${letter.toLowerCase()}`);
- e382df99a7950919789725ceeec126str.replace(/[A-Z]/g, (letter, index) => { return index == 0 ? letter.toLowerCase() : '_'+ letter.toLowerCase();});
- Hrishitext.split(/(?=[A-Z])/).join('_').toLowerCase()
- Evseev Vadim你可以像这样做:
function camelToUnderscore(key) {
var result = key.replace( /([A-Z])/g, " $1" );
return result.split(' ').join('_').toLowerCase();
}
console.log(camelToUnderscore('itemName'));
试试这个:
function toSnakeCase(inputString) {
return inputString.split('').map((character) => {
if (character == character.toUpperCase()) {
return '_' + character.toLowerCase();
} else {
return character;
}
})
.join('');
}
// x = item_name
'_'
替换为 (index != 0 ? '_': '')
并将索引作为参数添加到 map 函数中 ...map((character, index) => {...
- MoralCode function convertToSnakeCase(str) {
str = str[0].toLowerCase() + str.slice(1, str.length).replace(/[A-Z]/g, letter => `_${letter.toLowerCase()}`);
str = str.replaceAll(" _","_")
return str.replaceAll(" ","_").replace(/(^_*|_*$)/g, '');;
}
已处理测试用例
convertToSnakeCase("Payas AsdDs asD")
'payas_asd_ds_as_d'
convertToSnakeCase("Payas AsdDs")
'payas_asd_ds'
convertToSnakeCase("Pay AsdDs")
'pay__asd_ds'
convertToSnakeCase('test_')
'test';
test
),它会附加 _
(例如 test_
),因此我建议在最后一个替换中删除前导和尾随下划线:const convertToSnakeCase = s => s.replace(/[A-Z]/g, l =>
_${l.toLowerCase()}).replace(/ +_*/g, '_').replace(/(^_*|_*$)/g, '')
。另外,最终的测试用例结果(pay__asd_ds
)是无效的 snake_case 字符串,因为它包含两个连续的 _
字符。 - tukusejssirsconvertToSnakeCase('Payas AsdDs asD') === 'payas_asd_ds_as_d'; convertToSnakeCase('Payas AsdDs') === 'payas_asd_ds'; convertToSnakeCase('Pay AsdDs') === 'pay_asd_ds'; convertToSnakeCase('thisIsAnExample') === 'this_is_an_example'; convertToSnakeCase('test_') === 'test';
. - tukusejssirsconst convertToSnakeCase = s => s.replace(/[A-Z]/g, l => `_${l.toLowerCase()}`).replace(/ +_*/g, '_').replace(/(^_*|_*$)/g, '')
。 - tukusejssirs_.snakeCase(string)
函数。以前的方法是在每个大写字母前加上_
,包括字符串中的第一个位置。
所以让我们使用正向前瞻来修复这个问题吧;)
function convertCamelToSnake(str){
return str.replace(/([a-zA-Z])(?=[A-Z])/g,'$1_').toLowerCase()
}
console.log(convertCamelToSnake('camelCaseUrl')) // camel_case_url
console.log(convertCamelToSnake('HereIsABigCamelCaseStr')) // here_is_a_big_camel_case_str
如果首字母是大写,接受的答案将以_
开头。这解决了问题。
export function camelToSnake(string = '') {
return (string || '')
.replace(/([A-Z])/g, (match, group) => `_${group.toLowerCase()}`)
.replace(/^_/, '')
}
''
。 - Cadoiz