【问题标题】:Remove '\' char from string c#从字符串 c# 中删除 '\' 字符
【发布时间】:2011-12-05 09:45:21
【问题描述】:

我有以下代码

string line = ""; 

while ((line = stringReader.ReadLine()) != null)
{
    // split the lines
    for (int c = 0; c < line.Length; c++)
    {
        if ( line[c] == ',' && line[c - 1] == '"' && line[c + 1] == '"')
        {
            line.Trim(new char[] {'\\'}); // <------
            lineBreakOne = line.Substring(1, c  - 2);
            lineBreakTwo = line.Substring(c + 2, line.Length - 2);
        }
    }
}

我在我想知道的行中添加了一个评论网。我想从字符串中删除所有 '\' 字符。这是正确的方法吗?我不工作。所有 \ 仍在字符串中。

【问题讨论】:

  • Trim(new char[] {'\\'}) 将删除开头或结尾的所有 \ 字符。它“修剪”它们。正如@user978511 所述,您可以使用Replace("\\", "")。 (仅供参考,他使用 @ 字符的意思是“从字面上理解这个字符串,而不应用转义规则”)
  • 以下解决方案都不适合我...
  • 正则表达式.Unescape()

标签: c# trim


【解决方案1】:

你可以使用:

line.Replace(@"\", "");

line.Replace(@"\", string.Empty);

【讨论】:

  • 那是因为 Replace 不会改变字符串本身,它会返回改变后的字符串。所以你必须像我的回答一样,写line = line.Rep...
  • 这些不是斜线。这些是转义字符。它们在这里用于转义引号。考虑使用单引号而不是双引号。那时你就不需要斜线了。
  • @PoiXen - 在您发布的字符串中,\" 是一个转义序列,它让" 出现在字符串中。其中没有反斜杠字符。
  • @reza.cse08 因为你的字符串中没有 \,所以你有引号,它用 \ 转义 - 像 \"
【解决方案2】:

您可以使用String.Replace,它基本上会删除所有出现的情况

line.Replace(@"\", ""); 

【讨论】:

    【解决方案3】:

    为什么不简单呢?

    resultString = Regex.Replace(subjectString, @"\\", "");
    

    【讨论】:

    • 我认为需要是 "\\" 或 @"\" 不是吗?
    • @BaliC 实际上没有。使用一个 "\" 您可以解析“\” - 模式末尾的非法 \。 .NET 3.5
    【解决方案4】:

    要从字符串中删除所有“\”,只需执行以下操作:

    myString = myString.Replace("\\", "");
    

    【讨论】:

      【解决方案5】:
      line = line.Replace("\\", "");
      

      【讨论】:

        【解决方案6】:

        尝试使用

        String sOld = ...;
        String sNew =     sOld.Replace("\\", String.Empty);
        

        【讨论】:

          【解决方案7】:

          尝试替换

          string result = line.Replace("\\","");
          

          【讨论】:

            【解决方案8】:

            我已经多次遇到这个问题,我很惊讶其中许多都不起作用。

            我只是用 Newtonsoft.Json 反序列化字符串,然后得到明文。

            string rough = "\"call 12\"";
            rough = JsonConvert.DeserializeObject<string>(rough);
            
            //the result is: "call 12";
            

            【讨论】:

              【解决方案9】:

              Trim 仅删除字符串开头和结尾的字符,这就是您的代码无法正常工作的原因。你应该改用Replace

              line.Replace(@"\", string.Empty);
              

              【讨论】:

                【解决方案10】:
                         while ((line = stringReader.ReadLine()) != null)
                         {
                             // split the lines
                             for (int c = 0; c < line.Length; c++)
                             {
                                 line = line.Replace("\\", "");
                                 lineBreakOne = line.Substring(1, c - 2);
                                 lineBreakTwo = line.Substring(c + 2, line.Length - 2);
                             }
                         }
                

                【讨论】:

                  猜你喜欢
                  • 2022-01-09
                  • 2011-12-10
                  • 1970-01-01
                  • 2010-12-02
                  • 2015-01-13
                  • 2012-06-25
                  • 2019-11-09
                  相关资源
                  最近更新 更多