함수 upper_snake_case()

1 개요[ | ]

함수 upper_snake_case()

2 PHP[ | ]

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

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 같이 보기[ | ]

문서 댓글 ({{ doc_comments.length }})
{{ comment.name }} {{ comment.created | snstime }}