如何在 c# 中为字符串类型反转 for 循环?我需要每次迭代删除一个字符

How to reverse for loop in c# for string type ? i need to remove one character each iteration

static void Task()
{
    string x = "*";
    for (int i = 0; i < 4; i++)
    {
        Console.WriteLine(x);
        x += "*";
    }
}

它输出

*
**
***
****

他妈的只用“for”循环怎么反转? 特别是包含循环...

只要把它转过来,它从 4 开始下降到 1,打印那么多星星:

for (int i = 4; i > 1; i--)
{
Console.WriteLine(new string('*', i));
}

或使用Substring删除每个循环的第一个字符。

string x = "****";
for (int i = 0; i < 4; i++)
{
   Console.WriteLine(x);
   x = x.Substring(1);
}

您不需要反转循环。只需从字符串中删除星星,而不是添加一些。

string x = "****";
for (int i = 0; i < 4; i++)
{
    Console.WriteLine(x);
    x = x.Substring(1); // Removes the first star by keeping the rest of the string
                        // starting at index 1. (Index is zero-based)
}

注意 x 的最后一个值将是一个空字符串 "";但是,永远不会打印此值。

您不必反转循环的原因是您从不在循环内使用循环计数器 i。因此,它具有哪个值并不重要。只关心循环体执行了4次。


如果您不允许使用字符串函数,您可以嵌套第二个内部循环来打印每个星星。但是如果你反转循环会更好。

for (int numberOfStars = 4; numberOfStars >= 1; numberOfStars--) {
    for (int i = 0; i < numberOfStars; i++) {
        Console.Write("*"); // Note: Write, not WriteLine!
    }
    Console.WriteLine();
}

或者你可以每次都创建一个新字符串

for (int numberOfStars = 4; numberOfStars >= 1; numberOfStars--) {
    string x = "";
    for (int i = 0; i < numberOfStars; i++) {
        x += "*";
    }
    Console.WriteLine(x);
}

我不确定你到底想做什么,但这里有一种反转字符串的方法:

string str = "Hello";
char[] charArray = str.ToCharArray();
Array.Reverse(charArray); //olleH
str = charArray.ToString();//If you want to convert charArray to (already reversed) string.

然后,反转后,就可以开始循环了,如上面的答案所示。

现在可以了

for (int i = 4; i > 0; i--)
            {
                for (int j = 1; j <= i; j++)
                    Console.Write("*");
                Console.WriteLine();
            }