【发布时间】:2018-07-14 19:32:42
【问题描述】:
我一直在尝试编写一个将 under_score_words 转换为 camelCaseWords 的函数。以下是我过去会如何做这样的事情;
functionName = "function_for_test_case"
for character in functionName:
if character == "_":
functionName = functionName.replace("_" + functionName[functionName.index(character) + 1], functionName[functionName.index(character) + 1].upper())
print functionName
正确输出:
functionForTestCase
不过这一次我最初尝试了另一种方式,我发现这种方式更简洁:
functionName = "function_for_test_case"
for index, character in enumerate(functionName):
if character == "_":
functionName = functionName.replace("_" + functionName[index + 1], functionName[index + 1].upper())
print functionName
改为输出:
functionFor_test_case
我很困惑为什么它不起作用...我想这可能是因为我正在更改字符串的长度(通过删除下划线),但是我不确定为什么第一种方法作品。
另外,如果你在第二个函数中打印替换,你可以看到它确实找到并替换了其余的值,但它当然不会保存它们。例如:
functionName = "function_for_test_case"
for index, character in enumerate(functionName):
if character == "_":
print functionName.replace("_" + functionName[index + 1], functionName[index + 1].upper())
functionFor_test_case
function_forTest_case
function_for_testCase
据我所知,这些函数本质上是用不同的措辞做同样的事情,谁能解释为什么它们有不同的输出?
编辑:我已经编辑了 for 循环,以便更清楚地了解我正在尝试的内容
【问题讨论】:
-
您正在更改以下字符的位置。在第一个示例中,您然后再次寻找您想要的字符,而在第二个示例中 i 的值是错误的,因此替换调用找不到,例如“_t”。
标签: python python-2.7 replace enumerate