5 kyu · algorithms

Convert PascalCase string into snake_case

StringsAlgorithmsRegular Expressions

Complete the function/method so that it takes a PascalCase string and returns the string in snake_case notation. Lowercase characters can be numbers. If the method gets a number as input, it should return a string.

Examples

"TestController"  -->  "test_controller"
"MoviesAndBooks"  -->  "movies_and_books"
"App7Test"        -->  "app7_test"
1                 -->  "1"

Solutions

01-solution.jsView on GitHub ↗
// 1st
function toUnderscore(string) {
	if (typeof string !== 'string') return string.toString();
	return string
		.match(/[A-Z0-9][a-z0-9]*/g)
		.map((word) => word.toLowerCase())
		.join('_');
}

// 2nd
function toUnderscore(string) {
	if (typeof string !== 'string') return string.toString();
	return string.replace(/[A-Z]/g, (letter) => '_' + letter.toLowerCase()).slice(1);
}

// 3rd
function toUnderscore(string) {
	if (typeof string !== 'string') return string.toString();
	return string
		.replace(/([A-Z])/g, '_$1')
		.toLowerCase()
		.slice(1);
}