我正在尝试纠正传递3个变量的练习中的拼写错误。我正在努力寻找一种方法。我无法使用'替换'因为它需要两个字符串变量。我试过搞乱子串但是没想到它。
using System.Text;
using System.Threading.Tasks;
namespace Week_9_Ex1
{
class Program
{
static void Main(string[] args)
{
Program fix = new Program();
Console.WriteLine(fix.FixTypo("The Wilking Dead", 5, "a"));
}
public string FixTypo(string needCorrect, int index, string replacement)
{
needCorrect.Substring(index, 1);
return needCorrect;
}
}
}
答案 0 :(得分:0)
第一期:
字符串是immutable。在使用Substring
之后,您必须将字符串分配给某个内容,以便在任何地方使用该值。
在您的问题中,FixTypo
获取needCorrect
的子字符串,但只是将其丢弃,因为它未分配给任何内容。相反,您可以将其分配给自己:
needCorrect = needCorrect.Substring(index, 1)
直接 ...或return
它(这是对返回本身的赋值)
return needCorrect.Substring(index, 1)
第二期:要回答问题的主要部分,您可以使用needCorrect
或String.Concat
运算符轻松地将+
的多个子字符串连接在一起
例如,这是有效的,因为您将其直接分配给返回:
public string FixTypo(string needCorrect, int index, string replacement)
{
return needCorrect.Substring(0, index) + replacement + needCorrect.Substring(index + 1);
}
在此示例中,+
运算符将三个字符串连接在一起。第一个和第三个字符串是原始字符串的子字符串。第一个子字符串是从0
到index
(您要进行替换的点(The W
)。第三个子字符串来自index + 1
,直到结束原始字符串(lking Dead
)。
中间字符串只是您要在a
处用于替换(index
)的值。
答案 1 :(得分:0)
您可以使用子字符串进行替换:
public static string FixTypo(string needCorrect, int index, string replacement)
{
// Do some argument checks to avoid exceptions
if (needCorrect == null ||
needCorrect.Length < index + 1 ||
index < 0 ||
replacement == null)
{
// Note, you may want to throw an ArgumentNullException or
// ArgumentOutOfRange exception instead...
return needCorrect;
}
return needCorrect.Substring(0, index) + replacement[0] +
needCorrect.Substring(index + 1);
}
答案 2 :(得分:0)
假设grovesNL的答案是错误的,你实际上想要替换值:
using System.Text;
using System.Threading.Tasks;
namespace Week_9_Ex1
{
class Program
{
static void Main(string[] args)
{
Program fix = new Program();
Console.WriteLine(fix.FixTypo("The Wilking Dead", 5, "a"));
}
public string FixTypo(string needCorrect, int index, string replacement)
{
return string.Concat(needCorrect.Substring(0, index), replacement, needCorrect.Substring(index+1));
}
}
}