C # заменить элемент в списке <string>"/" - PullRequest
0 голосов
/ 17 сентября 2018

Я хочу \ нужно изменить определенный символ с другим символом в списке

Я хочу изменить «A» на «\ P \;»

это то, что я сделал

for (int i = 0; i < msg.Count; i++)
{
    msg[i] = msg[i].Replace("A", "\P\;");
}

но я получаю эту ошибку: «Нераспознанная escape-последовательность»


Проблема в том, что после него он не меняется на HEX.

вот что я подумал сделать:

List<string> changeOne = new List<string>
for (int i=0;i<msg.Count();i++)
{
if msg[i] == "A" 
{
changeOne[i] = "\";
change[One[i+1] = "p";
}
i++;
}

я могу сделать что-то подобное? как заставить это работать? потому что я думаю, что у меня будут проблемы

скажем, список сообщений такой:

0-D
1-A
2-S
3-1

Я хочу, чтобы список changeOne был таким

0-D
1-\
2-p
3-\
4-;
5-S
6-1

Спасибо,

Ответы [ 4 ]

0 голосов
/ 17 сентября 2018

Основная проблема в том, что ваш вопрос не слишком понятен. Вы хотите заменить одну строку на 4 строки.

1-A

становится

1-\
2-p
3-\
4-;

в вашем примере.

List<string> changeOne = new List<string>
for (int i=0;i<msg.Count();i++)
{
   if (msg[i] == "A")
   {
     changeOne.AddRange( new [] {"\\","p","\\",";" });
   }
   else
   {
          changeOne.Add(msg[i]);
   }
}
0 голосов
/ 17 сентября 2018

Если вы не хотите, чтобы литеральное значение экранировалось в C #, вы можете использовать маркер Verbatim String.

В этом случае замените "\P\;" на @"\P\;", что гораздо легче понять, чем иметь несколькоуходит в строку.

0 голосов
/ 17 сентября 2018

Символ обратной косой черты ("\") является специальным escape-символом, для которого необходимо использовать две обратные косые черты или строку @ verbatim.

for (int i = 0; i < msg.Count; i++)
        {
            msg[i] = msg[i].Replace("A", "\\P\\;");
            //or
            msg[i] = msg[i].Replace("A", @"\P\;");
        }

Вы можете обратиться по этой ссылке: Escape-последовательности

0 голосов
/ 17 сентября 2018

Попробуйте использовать verbatim string literal - все в строке, которое обычно интерпретируется как escape-последовательность, игнорируется.

например: C:\\Users\\Rich совпадает с @"C:\Users\Rich"

Exemple

В вашем случае:

msg[i] = msg[i].Replace("A", @"\P\;");
...