程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> .NET網頁編程 >> C# >> C#入門知識 >> 建議1:正確操作字符串,建議操作字符串

建議1:正確操作字符串,建議操作字符串

編輯:C#入門知識

建議1:正確操作字符串,建議操作字符串


如何規避使用不慎,帶來的額外的性能開銷:

1.確保盡量少的裝箱

在自己編寫的代碼中,應當盡可能地避免編寫不必要的裝箱代碼。

裝箱操作會帶來性能損耗的原因:

a.首先,會為值類型在托管堆中分配內存。除了值類型本身所分配的內存外,內存總量還要加上類型對象指針和同步塊索引所占的內存。

b.將值類型的值賦值到新分配的堆內存中。

c.返回已經成為引用類型的對象的地址。

 

2.避免分配額外的內存空間

對CLR來說,string對象是個很特殊的對象,它一旦被賦值就不可改變。在運行時調用System.String類中的任何方法或進行任何運算(如“=”、“+”等),都會在內存中創建一個新的字符串對象,要為該新對象分配新的內存空間。

盡量使用StringBuilder進行字符串操作,或者使用string.Format方法進行字符串操作(string.Format方法內部使用StringBuilder進行字符串格式化)。


正確進行字符串賦值操作的語句

為什麼char s[5]={'A','B','C','D','E'};不對

因為char[n] 中c++默認要留一位保存結束符 '\0',所以char[n]最多只保存n-1個字符,否則就會產生錯誤(無法正確輸出最後一個字符);應該這樣定義:
char s[6]={'A','B','C','D','E'};//你可以自己加'\0'到末尾:
char s[6]={'A','B','C','D','E','\0'};
而char *s;先定義了一個字符串指針,沒有初始化的;當s={"ABCDEF"};時,用字符串"ABCDEF"進行了初始化(或者說用s指向了字符串"ABCDEF"),此時系統自動在s的末尾加了'\0',因此是正確的,可以輸出.

如果你學的是c++,建議多用string 少用char.
string 方便快捷安全可靠.
當然,char的操作作為學習的一部分也是不可忽略的,string的內部實現是基於char的.
 

怎進行Python字符串操作?

它合理地結合了高性能與使得編寫程序簡單有趣的特色,下面講述python字符串操作流程。要使用string的方法要先import,但後來由於眾多的python使用者的建議,從python2.0開始, string方法改為用S.method()的形式調用,只要S是一個字符串對象就可以這樣使用,而不用import。同時為了保持向後兼容,現在的Python中仍然保留了一個string的module。闡述編制Python程序相關注意什麼是Python 解釋器及其使用?深度剖析Python Web 應用程序怎樣正確安裝Python?淺析Python中的Python全局變量其中定義的方法與python字符串操作是相同的,這些方法都最後都指向了用S.method ()調用的函數。要注意,S.method()能調用的方法比string的module中的多,比如isdigit()、istitle()等就只能用 S.method()的方式調用。 對一個字符串對象,首先想到的操作可能就是計算它有多少個字符組成,很容易想到用S.len(),但這是錯的,應該是len(S)。因為len()是內置函數,包括在__builtin__模塊中。python字符串操作不把len()包含在string類型中,乍看起來好像有點不可理解,其實一切有其合理的邏輯在裡頭。len()不僅可以計算字符串中的字符數。還可以計算 list的成員數,tuple的成員數等等,因此單單把len()算在string裡是不合適,因此一是可以把len()作為通用函數。用重載實現對不同類型的操作,還有就是可以在每種有len()運算的類型中都要包含一個len()函數。 Python選擇的是第一種解決辦法。類似的還有str(arg)函數,它把arg用string類型表示出來。字符串中字符大小寫的變換:S.lower() #小寫 S.upper() #大寫 S.swapcase() #大小寫互換 S.capitalize() #首字母大寫 String.capwords(S) 字符串在輸出時的對齊:S.lower() #小寫 S.upper() #大寫 S.swapcase() #大小寫互換 S.capitalize() #首字母大寫 String.capwords(S) 字符串中的搜索和替換:S.lower() #小寫 S.upper() #大寫 S.swapcase() #大小寫互換 S.capitalize() #首字母大寫 String.capwords(S) 使用上面的函數產後的翻譯表,把S進行翻譯,並把deletechars中有的字符刪掉。需要注意的是,如果S為unicode字符串,那麼就不支持 deletechars參數。可以使用把某個字符翻譯為python字符串操作的方式實現相同的功能。此外還可以使用codecs模塊的功能來創建更加功能強大的翻譯表。
 

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved