2013-08-31 27 views
0

如何在Python中執行此操作?Python中的C的strnset()有沒有等價的函數?

strnset(string,symbol,n); 

輸出應該是:

Enter String : ABCDEFGHIJ 
Enter Symbol for replacement : + 
How many string characters to be replaced : 4 

Before strnset() : ABCDEFGHIJ 
After strnset() : ++++EFGHIJ 
+1

從技術上講,你不能,因爲Python中的字符串是不可變的。 –

+5

認真嗎?即使在你的['strncpy'問題](http://stackoverflow.com/questions/18535563/is-there-any-strncpy-equivalent-function-in-python)得到的迴應之後,你會問這個問題嗎? –

回答

6

你要使用Python's Slice Notation

>>> def strnset(mystring, symbol, n): 
...  return symbol*n + mystring[n:] 
... 
>>> print strnset("ABCDEFGHIJ", "+", 4) 
++++EFGHIJ 

mystring[n:]字符串中的第n個字符後得到的每一個字符。然後你可以簡單地將它與標誌一起加入。

注意,如果你不希望返回的字符串具有比你實際傳遞的字符串更多的字符(例如,strnset('hi', '+', 4) == '++++'),那麼return語句前加上這一句:

n = min(len(mystring), n) 

現在,運行時:

>>> print strnset("HAI", "+", 4) 
+++ 
+1

好的答案!我只是讓'n = min(len(string),n)'確保你不會返回比它更大的東西。 –

+0

是的..它的工作..非常感謝.. –

+0

@ H.D。謝謝,補充。 – TerryA

0

這裏有一個與發電機表達式:

chars = "ABCDEJGHIJ" 
r = "+" 
n = 4 
masked_result = "".join(r if idx <= n else c for idx, c in enumerate(chars, 1)) 

>>> '++++EJGHIJ'

注:這支持屏蔽值小於n

相關問題