C#替换list <string>“ /”中的项目

时间:2018-09-17 13:06:00

标签: c# list replace char

我想要\需要用列表中的另一个字符更改特定字符

我想将“ A”更改为“ \ P \;”

这就是我所做的

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

但是我得到这个错误: “无法识别的转义序列”


问题在于它之后不会将其更改为十六进制。

这就是我想做的事情:

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 :(得分:2)

尝试使用verbatim string literal-字符串中通常被解释为转义序列的任何内容都将被忽略。

ex:C:\\Users\\Rich@"C:\Users\Rich"

Exemple

在您的情况下:

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

答案 1 :(得分:2)

如果您不希望在C#中转义文字值,则可以使用“逐字字符串”标记。

在这种情况下,将[RequiredRole]替换为"\P\;"会更容易理解,因为字符串中包含多个转义符。

答案 2 :(得分:1)

主要问题是您的问题不太清楚。 您要用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]);
   }
}

答案 3 :(得分:0)

反斜杠(“ \”)字符是特殊的转义字符,您需要使用两个反斜杠或使用@ 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 Sequences