Python刷題筆記(4)- 字串重組
阿新 • • 發佈:2019-01-10
題目:
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:]