2012-05-25 133 views
13

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

到目前为止,我使用:

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

,但它未完成更换。任何人都可以请帮忙?

+1

确定字符串中包含反斜杠,而不是_forward_斜杠(因为_dates_大多是代表)? – Oded

+1

我怀疑你最好格式化一个'DateTime'而不是尝试进行字符串操作。 – Jodrell

+0

抱歉oded,它在我的例子中是什么? – mezamorphic

回答

34

string.Replace不会修改字符串本身,但会返回一个新的字符串,这很可能是您扔掉了。这样做,而不是:

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

在一个侧面说明,这种操作通常出现在代码与格式化的日期字符串手动渣土左右。大多数时候,有一种更好的方式来做你想做的事(这是?)比这样的事情。

1

以这种方式使用它。

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

查找String.Replace返回类型。

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

0

您还可以使用:

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

,但只是让你知道,日期斜线通常向前者/,而不是反斜杠\

+0

'“\\”== @“\”'不是?我不会限制'char'也会产生差异。 – Jodrell

+0

@ericosg:阅读“C#中的逐字字符串” –

+0

@Jodrell,谢谢,他们是一样的,只是提出了一个替代方案,而更重要的是要注意正斜杠。我也编辑过它。 – ericosg

0

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

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

这是值得让你明白字符串是在C#中基本不变,使其线程安全的。关于字符串的更多细节以及为什么它们是不可变的,请参阅链接herehere

3

因为他们都说你需要在变量中取回值。

所以它应该是

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

或者

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

但不是唯一..下面也不起作用

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