1. 程式人生 > >Python刷題筆記(4)- 字串重組

Python刷題筆記(4)- 字串重組

題目:

Complete the method/function so that it converts dash/underscore delimited words into camel casing. The first word within the output should be capitalized only if the original word was capitalized.

Examples:

# returns "theStealthWarrior"
to_camel_case("the-stealth-warrior") 

# returns "TheStealthWarrior"
to_camel_case("The_Stealth_Warrior")

中文簡介:

其實就是去掉字串中的‘-’或‘_‘連線符,然後除去第一個單詞外,其他單詞首字母大寫連線

想法:

1、歷遍字串,找到單詞間隔符’-‘和’_',然後通過兩次迴圈找到首尾的間隔符,提取中間的單詞,並讓首字母大寫

2、輸入空字串,返回空字串

3、尋找第一個單詞和最後一個單詞,第一個單詞通過一次歷遍尋找第一個間隔符,然後跳出迴圈,最後一個單詞通過儲存最後次首間隔符的迴圈數,然後查找出後面的單詞

實現:

def to_camel_case(text):
    if text == '':
        return ''
    list = []
    for i in range(len(text)):
        if text[i] == '-' or text[i] == '_':
            list.append(text[:i])
            break
    for i in range(len(text)):
        if text[i] == '-' or text[i] == '_':
            for j in range(i+1,len(text)):
                if text[j] == '-' or text[j] == '_':
                    list.append(text[i+1].upper() + text[i+2:j])
                    break
            k = i    
    list.append(text[k+1].upper() + text[k+2:])
    return ''.join(list)

對比總結:

這種實現方法比較笨拙,採用耿直的思想來進行。通過測試提交後,才恍然大悟應該用split()函式來分割啊,這樣就簡單多了,根本不需要自己去歷遍查詢間隔符……通過replace()函式來替代統一間隔符,然後使用split()進行分割,立刻就能得到單詞列表,然後用capitalize()函式將後面的單詞首字母大寫就行了……

def to_camel_case(text):
    if text == '':
        return ''
    list =[string.capitalize() for string in text.replace('-','_').split('_')]
    return text[0] + ''.join(list)[1:]