替换字符串中的反斜杠

29

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

目前我正在使用以下代码:

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

但它还没有进行替换。请问有人可以帮忙吗?


1
你确定该字符串包含反斜杠而不是正斜杠(因为日期通常使用正斜杠表示)? - Oded
1
我认为你最好格式化一个 DateTime 而不是尝试进行字符串操作。 - Jodrell
抱歉,oded,它是我的示例中的任何一个? - intrigued_66
5个回答

58

string.Replace不会修改字符串本身,而是返回一个新的字符串,你很可能会将其丢弃。改为以下操作:

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

顺便说一下,这种操作通常出现在手动更改格式化日期字符串的代码中。大多数情况下,有比这样做更好的方法来实现你想要的目的(是什么?)。


5
作为所有人都在说的那样,您需要将值返回到变量中。
因此,应该是:
 val1= val1.Replace(@"\","-");

或者

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

但不仅限于..以下的方法将不起作用

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

2

使用方式如下。

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

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

2

您也可以使用以下方法:

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

但是我想提醒您,日期斜杠通常是正斜杠/,而不是反斜杠\


"\\" == @"\" 不是吗?我不认为仅限于 char 会有所区别。 - Jodrell
1
@ericosg:阅读关于C#中的“verbatim字符串”的内容。 - Nikhil Agrawal
@Jodrell,谢谢,是的,它们是相同的,只是在强调正斜杠时提出了另一种选择。我已经进行了编辑。 - ericosg

1

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

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

值得注意的是,在C#中,字符串基本上是不可变的,这样可以使它线程安全。有关字符串以及为什么它们是不可变的更多详细信息,请参见链接这里这里


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接