[英]C# String class: No way of pushing a character to the end of the string?
真???
我已經搜索過https://msdn.microsoft.com/zh-cn/library/system.string(v=vs.110).aspx ,看不到任何可以將字符直接推到末尾的方法一個字符串。 我能想到的最好的是
mystr.Insert(mystr.Length, newchar.ToString());
由於將字符轉換為字符串並執行字符串連接會產生額外的開銷,因此這似乎沒有效率。 我的特定用例看起來像
while (eqtn[curidx] >= '0' && eqtn[curidx] <= '9') istr.Insert(istr.Length, eqtn[curidx++].ToString());
只是因為我想不出更好的方法。 有沒有更好的辦法?
.NET中的字符串是不可變的,因此您的代碼不會執行任何操作。 String
上的每個方法都會創建一個新實例,它不會修改現有字符串。
String
類會覆蓋+
運算符,以創建一個新字符串,並在其末尾附加字符:
istr = istr + eqtn[curidx++];
如果您要執行許多此類操作,則使用StringBuilder
會更加高效。 基本上是可變的String
。
您可以使用Append方法將字符添加到結尾。 准備好后,調用ToString
以獲取構造的字符串。
是的,絕對正確:您不能將字符壓入string
的末尾,因為C#字符串是不可變的 。 一旦有了對象,就將其值固定住,直到創建新的string
對象。
另一方面,創建一個在結尾帶有額外字符的新字符串非常簡單:使用+
運算符重載來執行串聯 :
string s = "abc";
s += '9'; // s becomes "abc9"
請注意,此解決方案不太適合在循環中使用,因為如果循環運行N次,則會在該過程中創建N個丟棄對象。 更好的解決方案是使用StringBuilder
,它在C#中提供可變的字符串。 StringBuilder
類具有方便的Append
方法,該方法將字符推到StringBuilder
的末尾。 構建完字符串后,請調用ToString
將結果作為不可變的string
對象獲取。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.