具有有限变量的方法中的字符串替换

时间:2014-11-30 22:02:01

标签: c#

我正在尝试纠正传递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;
        }    
    }
}

3 个答案:

答案 0 :(得分:0)

第一期: 字符串是immutable。在使用Substring之后,您必须将字符串分配给某个内容,以便在任何地方使用该值。

在您的问题中,FixTypo获取needCorrect的子字符串,但只是将其丢弃,因为它未分配给任何内容。相反,您可以将其分配给自己:

needCorrect = needCorrect.Substring(index, 1)
直接

...或return它(这是对返回本身的赋值)

return needCorrect.Substring(index, 1)

第二期:要回答问题的主要部分,您可以使用needCorrectString.Concat运算符轻松地将+的多个子字符串连接在一起

例如,这是有效的,因为您将其直接分配给返回:

public string FixTypo(string needCorrect, int index, string replacement)
{
    return needCorrect.Substring(0, index) + replacement + needCorrect.Substring(index + 1);
}

在此示例中,+运算符将三个字符串连接在一起。第一个和第三个字符串是原始字符串的子字符串。第一个子字符串是从0index(您要进行替换的点(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));
        }
    }
}