簡體   English   中英

換行符未添加到字符串

[英]Newline character not being added to string

這是我的測試代碼

public string myMethod(int[,] anArray)
{
    string aString = "";

    for (int i = 0; i < anArray.GetLength(0); i++)
    {
        for (int j = 0; j < anArray.GetLength(1); j++)
        {
            if (j == anArray.Length - 1)
            {
                aString += " " + anArray[i, j] + "\r\n";
                continue;
            }
            aString += anArray[i, j] + "|";
        }
    }
    return aString; 
}

當我調用該方法時,我期望一個包含換行符的字符串。

我想要的結果

0|0|0
0|0|0
0|0|0

但是我明白了

0|0|0|0|0|0|0|0|0|

謝謝。

編輯:如果條件愚蠢的錯誤,僅此而已。

第2次編輯:我在代碼的后半部分使用了錯誤的if條件語句,從而導致了錯誤的字符串。

字符串是不可變的,效率很低。

StringBuild sb = new StringBuilder();
for ()
{
   sb.AppendLine(" " + anArray[i, j]);
}

根據評論

anArray.GetLength(1) 
anArray.Length  

不一樣

if (j == anArray.Length - 1)替換為if (j == anArray.GetLength(1) - 1)

public string myMethod(int[,] anArray)
{
    string aString = "";
    for (int i = 0; i < anArray.GetLength(0); i++)
    {
        for (int j = 0; j < anArray.GetLength(1); j++)
        {
            if (j == anArray.GetLength(1) - 1)
            {
                aString += anArray[i, j] + "\r\n";
                continue;
            }
            aString += anArray[i, j] + "|";
        }
    }
    return aString;
}

代碼應如下所示:

if (j == anArray.GetUpperBound(1))
{
    aString += anArray[i, j] + "\r\n";
    continue;
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM