【问题标题】:C# replace item in list<string> "/"C# 替换列表中的项目<string> "/"
【发布时间】:2019-02-21 10:07:56
【问题描述】:

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

我想把“A”换成“\P\;”

这就是我所做的

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

但我收到此错误: “无法识别的转义序列”


问题是它不会在它之后将其更改为 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

谢谢,

【问题讨论】:

  • 反斜杠是转义字符;例如对于您将使用"\n" 的新行。为避免这种情况,您需要转义反斜杠:"\\",或使用非转义字符串:@"\";即"\\P\\;"@"\P\;"
  • 你也可以使用字符串文字@"\P\;"link
  • 不清楚您所说的 "将其更改为 HEX" 是什么意思 - 您的示例中似乎没有任何十六进制字符
  • 我知道 - 我认为它会是一样的,但现在我改变了问题 - 看看
  • 您可能应该将修订后的版本作为一个新问题提出,因为您已经完全改变了问题的性质。

标签: c# list replace char


【解决方案1】:

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

例如:C:\\Users\\Rich@"C:\Users\Rich" 相同

Exemple

在你的情况下:

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

【讨论】:

  • 问题是我需要将其更改为 HEX ,如果我使用 '@' - 它不会转换它..
  • @David12123 “更改为十六进制”是什么意思?也许您应该将此信息添加到您的问题中。
  • @David12123 它必须与@一起使用,重新检查您的代码以转换为 HEX
  • 我的帖子改了-请看一下
  • @David12123 这完全改变了问题,因为您实际上不想将一个字符串替换为另一个字符串,而是将一个字符串替换为最多三个并将它们添加到列表中。
【解决方案2】:

当您不想在 C# 中转义文字值时,您可以使用逐字字符串标记。

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

【讨论】:

    【解决方案3】:

    反斜杠(“\”)字符是一个特殊的转义字符,需要使用两个反斜杠或使用@逐字字符串。

    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

    【讨论】:

    • 我的帖子改了-请看
    【解决方案4】:

    主要问题是你的问题不太清楚。 您想用 4 个字符串替换 1 个字符串。

    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]);
       }
    }
    

    【讨论】:

    • 我刚读到这个,还不清楚。这是我想要的 - 谢谢!
    猜你喜欢
    • 2019-12-02
    • 2012-11-11
    • 2021-03-06
    • 1970-01-01
    • 1970-01-01
    • 2015-06-24
    • 2010-09-15
    • 2021-10-14
    • 1970-01-01
    相关资源
    最近更新 更多