我有这个方法给了我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();
}
该方法必须像这样编写(没有例外)
答案 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();
}