换行符未添加到字符串中

时间:2018-05-22 18:45:26

标签: c# 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|

感谢。

编辑: if条件上的愚蠢错误,仅此而已。

第二次编辑:我在代码的后半部分中出现了错误的if条件语句,导致字符串不正确。

3 个答案:

答案 0 :(得分:2)

字符串是不可变的,效率低下。

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

根据评论

anArray.GetLength(1) 
anArray.Length  

不一样

答案 1 :(得分:1)

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;
}

答案 2 :(得分:1)

代码应如下所示:

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