【问题标题】:Replacing backslash in a string替换字符串中的反斜杠
【发布时间】:2012-05-25 10:33:25
【问题描述】:

我在尝试替换 C# .net 上日期字符串中的反斜杠时遇到了一些问题。

到目前为止我正在使用:

string.Replace(@"\","-")

但它还没有完成替换。有人可以帮忙吗?

【问题讨论】:

  • 您确定字符串包含反斜杠而不是 正向 斜杠(因为 dates 主要表示)?
  • 我怀疑你最好格式化DateTime而不是尝试进行字符串操作。
  • 对不起,我的例子中的那个是什么?

标签: c# .net string


【解决方案1】:

string.Replace 不会修改字符串本身,而是返回一个新字符串,您很可能会将其丢弃。改为这样做:

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

附带说明,这种操作通常出现在手动处理格式化日期字符串的代码中。大多数时候,有比这样的事情更好的方法来做你想做的事(这是什么?)。

【讨论】:

    【解决方案2】:

    正如所有人都说你需要在变量中取回价值。

    应该是这样的

     val1= val1.Replace(@"\","-");
    

    或者

     val1= val1.Replace("\\","-");
    

    但不仅..下面的一个不起作用

     val1.Replace(@"\","-");
    

    【讨论】:

      【解决方案3】:

      以这种方式使用它。

      oldstring = oldstring.Replace(@"\","-");
      

      寻找String.Replace 返回类型。

      它是一个返回正确字符串的函数。如果它只是简单地更改旧字符串,那么它将具有 void 返回类型。

      【讨论】:

        【解决方案4】:

        你也可以使用:

        myString = myString.Replace('\\', '-'));
        

        但请注意,日期斜杠通常是正斜杠 /,而不是反斜杠 \

        【讨论】:

        • "\\" == @"\" 不是吗?我不认为限制为 char 也会有所作为。
        • @ericosg:了解verbatim strings in C#
        • @Jodrell,谢谢,是的,它们是相同的,只是提出了一个替代方案,但更重要的是要注意正斜杠。我也编辑过。
        【解决方案5】:

        正如其他人所建议的那样,String.Replace 不会更新原始字符串对象,而是返回一个新字符串。

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

        值得您了解字符串在 C# 中是不可变的,基本上是为了使其成为线程安全的。有关字符串的更多详细信息以及它们为何不可变,请参阅链接 herehere

        【讨论】:

          猜你喜欢
          • 2011-08-01
          • 2018-02-27
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2011-02-22
          • 2023-04-03
          • 2011-11-23
          相关资源
          最近更新 更多