1 개요[ | ]
- 함수 upper_snake_case()
2 PHP[ | ]

PHP
Copy
function upper_snake_case($s) {
if(preg_match('/^[A-Z]+$/', $s)) $s = mb_strtolower($s, 'UTF-8');
$s = preg_replace('/([A-Z]+)/u', '_$1', $s);
$s = preg_replace('/^_/u', '', $s);
$s = preg_replace('/[-_ ]+/u', '_', $s);
return mb_strtoupper($s, 'UTF-8');
}
$samples = ['FooBar', 'fooBar', 'foo_bar', 'Foo Bar', 'foo bar', 'foo-bar', 'FOO_BAR', 'FOO-BAR', 'Foobar', 'FOOBAR', 'F', ''];
foreach( $samples as $sample ) {
echo "[$sample] → [" . upper_snake_case($sample) . "]" . PHP_EOL;
}
# [FooBar] → [FOO_BAR]
# [fooBar] → [FOO_BAR]
# [foo_bar] → [FOO_BAR]
# [Foo Bar] → [FOO_BAR]
# [foo bar] → [FOO_BAR]
# [foo-bar] → [FOO_BAR]
# [FOO_BAR] → [FOO_BAR]
# [FOO-BAR] → [FOO_BAR]
# [Foobar] → [FOOBAR]
# [FOOBAR] → [FOOBAR]
# [F] → [F]
# [] → []
3 Python[ | ]

Python
Copy
import re
def upper_snake_case(s):
if re.match(r'[A-Z]+', s): s = s.lower()
return re.sub(r"[-_ ]+","_",re.sub(r"^_","",re.sub(r"([A-Z])", r"_\1",s))).upper()
samples = ['FooBar', 'fooBar', 'foo_bar', 'Foo Bar', 'foo bar', 'foo-bar', 'FOO_BAR', 'FOO-BAR', 'Foobar', 'FOOBAR', 'F', '']
for sample in samples:
print( '[' + sample + '] → [' + upper_snake_case(sample) + ']' )
# [FooBar] → [FOOBAR]
# [fooBar] → [FOO_BAR]
# [foo_bar] → [FOO_BAR]
# [Foo Bar] → [FOO_BAR]
# [foo bar] → [FOO_BAR]
# [foo-bar] → [FOO_BAR]
# [FOO_BAR] → [FOO_BAR]
# [FOO-BAR] → [FOO_BAR]
# [Foobar] → [FOOBAR]
# [FOOBAR] → [FOOBAR]
# [F] → [F]
# [] → []
4 같이 보기[ | ]
편집자 Jmnote Jmnote bot
로그인하시면 댓글을 쓸 수 있습니다.