[英]An exception of type 'System.OutOfMemoryException' occurred in mscorlib.dll but was not handled in user code, while creating json file
[英]Get this error when I try to debug. “An exception of type 'System.OutOfMemoryException' occurred in mscorlib.dll but was not handled in user code”
我正在嘗試制作一個應用程序,使所有首字母都變為大寫字母,而其余的都變為小寫。
string navn = txtNavn.Text;
string delnavn1, delnavn2;
delnavn1 = navn.Substring(0, 1).ToUpper();
delnavn2 = navn.Substring(1).ToLower();
navn = delnavn1 + delnavn2;
if (navn.Contains(" "))
{
for (int i = 0; i < navn.Length; i++)
{
if (navn.Substring(i, 1) == " ")
{
delnavn1 = navn.Substring(i, 1).ToUpper();
delnavn2 = navn.Substring(i + 2).ToLower();
navn += delnavn1 + delnavn2 + " ";
}
}
}
else
{
delnavn1 = navn.Substring(0, 1).ToUpper();
delnavn2 = navn.Substring(1).ToLower();
navn = delnavn1 + delnavn2;
}
txbMelding.Text = "Du heter " + navn;
對不起,奇怪的變量名,我是挪威人,沒有足夠的時間來更改它們。
我懷疑這是當前的問題:
navn += delnavn1 + delnavn2 + " ";
您正在與navn
的先前值連接 。 因此,如果您從“ Hello there”開始,那么當您到達第一個空間時,您將擁有:
delnavn1 = " "
delnavn2 = "There"
navn = "Hello there" + delnavn1 + delnavn2;
即navn = "Hello there There"
。
這是一個比較簡單的方法:
char[] text = txtNavn.Text.ToCharArray();
for (int i = 0; i < text.Length; i++)
{
char c = text[i];
text[i] = i == 0 || text[i - 1] == ' '
? char.ToUpper(c)
: char.ToLower(c);
}
txbMelding.Text = "Du heter " + new string(text);
“替換”數組中的字母比弄亂字符串串聯和子字符串要簡單得多。
請注意,這仍然是執行標題框的一種非常粗糙的方法-您可能應該查看TextInfo.ToTitleCase
以獲取更全面的對文化敏感的代碼(以及無需自己編寫的代碼!)。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.