1

このプログラムは、何かをノーマルからキャメルケースに変更するためのものです。例: Not_Camel_case -> notCamelCase または Camel_Case から camelCase へ。

def titlecase(value):
    return "".join(word.title() for word in value.split("_"))

def titlecase2(value):
    return value[:1].lower() + titlecase(value)[1:]
def to_camel(value):
    return titlecase2(value)

これは私が望むものを出力しますが.....これは競争のためであり、Not_An_SMSを入れるとnotAnSMSではなくnotAnSmsが返されますか? また、num2words を入力しても同じ結果が返されるはずですが、代わりに私のプログラムは num2Words のように大文字にします。これらの問題を解決するにはどうすればよいですか?

編集:コンプは特にto_camelの関数を直接チェックするため、出力ではなく関数内で変更する必要があります。

4

2 に答える 2

0

この簡略化された部分は、Rails から盗用されたものです。

acronyms={}
def camelize(identifier, upper_first=False):
    words = identifier.split('_')
    if upper_first:
        return ''.join(acronyms.get(w) or w.capitalize() for w in words)
    else:
        return (acronyms.get(words[0]) or words[0].lower()) + \
               ''.join(acronyms.get(w) or w.capitalize() for w in words[1:])

acronyms['SMS']='SMS'
于 2013-08-09T11:41:20.167 に答える
0

Not_An_SMSを返したい場合はnotAnSms、関数の使用を停止し、word.title()代わりに各単語の最初の文字を大文字/小文字にするだけで、他の単語の大文字と小文字を維持する必要があります。

それはまだSMS_status戻ってくることを意味しますsMSStatusが、それは例外と見なすことができると思います. それを修正したい場合は、何かが単語であるかどうかを判断できるように、単語の辞書が必要です。そして、それは確かに競争の範囲内ではありません.

于 2013-08-09T10:42:19.783 に答える