Как заменить символ другим символом без использования string.replace? - PullRequest
0 голосов
/ 06 июля 2019

Я хочу найти все вхождения символа для экс. «Н» внутри более длинной струны «Привидение Хилл Хаус». Я использую этот код, но я ищу только по определенной позиции.

 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 ]

1 голос
/ 06 июля 2019

Решение One Line с использованием 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

0 голосов
/ 06 июля 2019

Общий подход - сначала найти позицию строки, которую вы хотите заменить на другую строку с помощью функции String.IndexOf, затем разделить строку с позиции на длину строки, которую вы хотите заменить, а не просто вставить строку с функцией string.insert.

...