如何不使用string.replace将一个char替换为另一个char?

时间:2019-07-06 13:46:39

标签: c# string replace find

我想查找前一个字符的所有出现。较长的字符串“ The Haunting of Hill House”中的“ H”。我正在使用此代码,但仅按特定位置进行搜索。

 static void Main(string[] args)
    {
        string str = "The Haunting of Hill House!";
       Console.WriteLine("String: " + str);
        // replacing character at position 7
        int pos = 7;
        char rep = 'p';


            string res = str.Substring(0, pos) + rep + str.Substring(pos + 1);
            Console.WriteLine("String after replacing a character: " + res);
            Console.ReadLine();

    }

2 个答案:

答案 0 :(得分:1)

使用Linq而不使用string.Replace()的单线解决方案,

string result = string.Join("", str.Select(x => x == 'H' ? 'p' : x));
                                                       `

如果要替换整个字符串,请尝试此

string result1 = string.Join(" ", str.Split(' ').Select(x => x == "Hill" ? "Zill" : x));

输入:

The Haunting of Hill House!

输出:

The paunting of pill pouse!

The Haunting of Zill House!
              //^^^^ Replaced word from Hill to Zill 

.net Fiddle

答案 1 :(得分:0)

一般方法是先使用String.IndexOf函数找到要在其他字符串上替换的字符串位置,然后将字符串从位置替换为要替换的字符串长度,而不是仅将字符串插入{{1} }功能。