反转字符串c#

时间:2012-11-06 10:07:59

标签: c# string

我有这个方法给了我IndexOutOfRangeException,你能帮助我理解为什么吗?

public string FlipString(string inTxt)
    {
        StringBuilder outTxt = new StringBuilder();
        for (int i = inTxt.Length; i > 0; i--)
        {
            char ch = inTxt[i];
            outTxt.Append(ch);
        }
        Console.WriteLine(outTxt.ToString());
        return outTxt.ToString();
    }

该方法必须像这样编写(没有例外)

7 个答案:

答案 0 :(得分:4)

C#中的数组是基于0的,而不是基于1的。您正在从n迭代到1,但您需要从n-1迭代到0:

for (int i = inTxt.Length - 1; i >= 0; i--)

另一方面,如果你只想反转字符串,那么使用LINQ有一个更简单的解决方案:

var reversed = new String(inTxt.Reverse().ToArray())

答案 1 :(得分:1)

反向jus试试这个

string reversed = new string(stringinput.Reverse().ToArray());

string input = "hello world";
char[] inputarray = input.ToCharArray();
Array.Reverse(inputarray);
string output = new string(inputarray);

答案 2 :(得分:0)

试试这个

public string FlipString(string inTxt)
{
    StringBuilder outTxt = new StringBuilder();
    for (int i = inTxt.Length-1; i >= 0; i--)
    {
        char ch = inTxt[i];
        outTxt.Append(ch);
    }
    Console.WriteLine(outTxt.ToString());
    return outTxt.ToString();
}

你需要让你的第一个进入循环的是字符串的长度 - 1,因为字符串数组是零。

答案 3 :(得分:0)

扩展方法:

public static string Reverse(this string source)
{
    char[] arr = source.ToCharArray();
    Array.Reverse(arr);
    return new string(arr);
}

并使用:

var reverted = source.Reverse();

P.S。尽可能多地保持它。

答案 4 :(得分:0)

public string FlipString(string inTxt)
{
    StringBuilder outTxt = new StringBuilder();
    for (int i = inTxt.Length - 1; i >= 0; i--)
    {
        char ch = inTxt[i];
        outTxt.Append(ch);
    }
    Console.WriteLine(outTxt.ToString());
    return outTxt.ToString();
}

答案 5 :(得分:0)

你需要从最后一个字符开始,即字符串的长度减1,因为该字符串是基于零的。

public string FlipString(string inTxt)
    {
        StringBuilder outTxt = new StringBuilder();
        for (int i = inTxt.Length-1; i >= 0; i--)
        {
            char ch = inTxt[i];
            outTxt.Append(ch);
        }
        Console.WriteLine(outTxt.ToString());
        return outTxt.ToString();
    }

答案 6 :(得分:0)

字符串中的索引从0开始,到达长度 - 1.

第一项操作是

char ch = inTxt[inTxt.Length]

所以你的代码应该是

public string FlipString(string inTxt)
{
    StringBuilder outTxt = new StringBuilder();
    for (int i = inTxt.Length - 1; i > 0; i--)
    {
         char ch = inTxt[i];
         outTxt.Append(ch);
    }
    Console.WriteLine(outTxt.ToString());
    return outTxt.ToString();
}