2012-05-25 16 views
13

Estoy teniendo algunos problemas al tratar de reemplazar las barras invertidas en una cadena de fecha en C# .net.Reemplazo de la barra invertida en una cadena

Hasta el momento estoy usando:

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

pero que ya no haya hecho la sustitución. ¿Alguien podría ayudar?

+1

¿Seguro de la cadena contiene barras invertidas y no _forward_ barras (como _dates_ están mayormente representados)? – Oded

+1

Sospecho que sería mejor formatear un 'DateTime' que tratar de manipular cadenas. – Jodrell

+0

Lo siento, es lo que sea en mi ejemplo? – mezamorphic

Respuesta

34

string.Replace no modifica la cadena en sí, pero devuelve una nueva cadena, que muy probablemente está tirando. Hacer esto en su lugar:

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

En una nota lateral, este tipo de operación se ve generalmente en código que mucks manualmente alrededor con las cadenas de fecha con formato. La mayoría de las veces hay una mejor manera de hacer lo que quiere (¿y qué es?) Que cosas como esta.

1

Úselo de esta manera.

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

Busque String.Replace tipo de retorno.

Es una función que devuelve una cadena corregida. Si simplemente hubiera cambiado una cadena vieja, entonces tendría un tipo de devolución void.

0

También es posible usar:

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

pero sólo le permite saber, barras de fecha son por lo general con interés los /, y no invertidas \.

+0

'" \\ "== @" \ "' no? No creo que la limitación a 'char' marque la diferencia tampoco. – Jodrell

+0

@ericosg: Lea sobre 'cadenas verbatim en C#' –

+0

@Jodrell, gracias, sí, son lo mismo, solo estaba proponiendo una alternativa, mientras que es más importante tener en cuenta la barra diagonal. lo he editado también – ericosg

0

Como otros sugirieron que String.Replace no actualiza el objeto de cadena original sino que devuelve una nueva cadena.

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

Vale la pena para que usted entienda esa cadena es inmutable en C# básicamente para que sea seguro para subprocesos. Más detalles sobre las cadenas y por qué son inmutables, consulte los enlaces here y here

3

, ya que todos ellos indican que debe recuperar el valor de la variable.

lo que debe ser

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

O

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

pero no sólo por debajo de uno .. no funcionará

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