【问题标题】:Python string mutationPython字符串突变
【发布时间】:2022-01-15 18:40:06
【问题描述】:

我正在尝试遍历字符串并将下划线转换为驼峰式大小写。示例)my_string --> myString

我在下面发布了我的工作代码。有人能帮我找出我的逻辑漏洞吗?

            
def to_camel_ca (string):
    camel_string = ""
    for i in range(len(string)):
        if string[i] == '_':
            camel_string = camel_string + string[i + 1].replace(string[i+1], string[i+1].capitalize())
        elif string[i] != "_":
            camel_string = camel_string + string[i]
        print(camel_string)
    return camel_string
    
    
to_camel_ca('my_string') 



#returns

m
my
myS
mySs
mySst
mySstr
mySstri
mySstrin
mySstring

'mySstring'

非常感谢!

【问题讨论】:

  • 您将_ 转换为S 之后您应该跳过下一个字母

标签: python-3.x string for-loop


【解决方案1】:

请注意,camelCase 字符串会更短。当你遇到下划线,并且将下一个字母大写时,你需要跳过源字符串中的一个字母。这是一种方法:

def to_camel_ca (string):
    camel_string = ""
    skip = False
    for i in range(len(string)):
        if skip:
            skip = False
            continue
        if string[i] == '_':
            camel_string = camel_string + string[i + 1].replace(string[i+1], string[i+1].capitalize())
            skip = True
        elif string[i] != "_":
            camel_string = camel_string + string[i]
        print(camel_string)
    return camel_string

示例

to_camel_ca('my_test_string')
m
my
myT
myTe
myTes
myTest
myTestS
myTestSt
myTestStr
myTestStri
myTestStrin
myTestString

略有不同的方法

这是一个稍微简单的方法。遇到下划线时,记下下一个字母大写。它的优点是可以处理以下划线结尾的输入字符串。

def to_camel_ca (string):
    camel_string = ""
    capitalize = False
    for i in range(len(string)):
        if string[i] == '_':
            capitalize = True
            continue
        elif capitalize:
            camel_string = camel_string + string[i].capitalize()
            capitalize = False
        elif string[i] != "_":
            camel_string = camel_string + string[i]
        print(camel_string)
    return camel_string

【讨论】:

  • 注意:如果输入字符串以下划线结尾,则会出现错误。尝试访问下划线后的字母时会出现数组索引超出范围错误。您可以在访问 [i + 1] 之前检查 if i == len(string): continue 来解决此问题。
【解决方案2】:

问题是下划线后的字符被处理/添加到 camelString 两次:一次是在 if 找到并下划线时,另一次是当该字符本身与 elif 条件匹配时。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-05-12
    • 2017-06-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-04-19
    • 2018-07-19
    相关资源
    最近更新 更多