簡體   English   中英

反轉字符串C#

[英]Reversing a string c#

我有給我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();
    }

該方法必須這樣寫(無例外)

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())

扭轉強制嘗試這個

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

要么

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

嘗試這個

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,因為字符串數組是從零開始的。

擴展方式:

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

並使用:

var reverted = source.Reverse();

ps盡可能簡單地保留它。

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,因為該字符串基於零。

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

字符串中的索引從0開始,並達到Length-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();
}

暫無
暫無

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

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