替换字符串中的每个第 n 个字母 [英] Replace every nth letter in a string
本文介绍了替换字符串中的每个第 n 个字母的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我正在编写一个函数来替换字符串中的每个第 n 个字母
def replaceN(str, n):对于范围内的 i(len(str)):n=str[i]newStr=str.replace(n, "*")返回新的Str
但是当我执行它时,只有第一个字母被*替换.我确定有错误,但我看不到.
解决方案
One-liner:
newstring = ''.join("*" if i % n == 0 else char for i, char in enumerate(string, 1))
扩展:
def replace_n(string, n, first=0):字母 = (# i % n == 0 表示这个字母应该被替换"*" 如果 i % n == 0 else char# 迭代索引/值对对于 i, char in enumerate(string, -first))返回''.join(字母)
<预><代码>>>>replace_n("你好世界", 4)'*ell* 世界*ld'>>>replace_n("你好世界", 4, first=-1)'你好*o w*orl*'
I'm writing a function to replace every n-th letter from a string
def replaceN(str, n):
for i in range(len(str)):
n=str[i]
newStr=str.replace(n, "*")
return newStr
but when i execute it, only the first letter is replaced with a *. I'm sure there is a mistake, but i can't see it.
解决方案
One-liner:
newstring = ''.join("*" if i % n == 0 else char for i, char in enumerate(string, 1))
Expanded:
def replace_n(string, n, first=0):
letters = (
# i % n == 0 means this letter should be replaced
"*" if i % n == 0 else char
# iterate index/value pairs
for i, char in enumerate(string, -first)
)
return ''.join(letters)
>>> replace_n("hello world", 4)
'*ell* wo*ld'
>>> replace_n("hello world", 4, first=-1)
'hel*o w*orl*'
这篇关于替换字符串中的每个第 n 个字母的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文