2011-08-24 8 views
5

Básicamente lo que estoy tratando de hacer es reemplazar un símbolo como ™, ®, etc, con algo más, pero cuando llamo C# String.Replace no encontrar/reemplazar Símbolo (™, ®)

myString = myString.Replace("®", "something else")

Su no lo hace hacer cualquier cosa

¿Alguna idea?

+0

por favor muestra algún código. –

+1

¿Recuerda volver a asignar la cadena? – Brandon

+1

Sí, más tarde estoy reasignando la cadena. Editaré la pregunta para que quede más claro. – bigamil

Respuesta

6

try myString.Reemplazar ("\ u00A9", "else"); tienes que escapar del

+0

Hey man you ¡tenían razón! Necesitaba la versión codificada del símbolo. ¡Gracias un montón! – bigamil

+0

oh 00A9 = la marca de derechos de autor, pensé que era lo que querías, 00AE es de hecho lo r thingy – killie01

0

Recuerde que string.Replace devuelve una nueva cadena, por lo que necesita para volver a asignarle

myString = myString.Replace("®", "something else"); 
6

Cuando se utiliza String.Replace se crea una nueva cadena. Es un error muy común creer que la cadena suministrada se modifica. Sin embargo, las cadenas en .NET son inmutables y no se pueden modificar.

usted tiene que llamar así:

myString = myString.Replace("®", "something else"); 
2

que suponer que su error se encuentra en llamar Sustituir sin asignar el resultado a cualquier cosa.

sin ver su código es difícil de adivinar, pero algo como esto debería funcionar:

myString = myString.Replace("®", "something else"); 
1

Puede ser probable que C# no le gusta el símbolo de marca registrada literal. Sugeriría intentar reemplazar el personaje usando un código de carácter, usando el valor integral, hex o unicode.

A continuación se muestra un ejemplo con el valor integral del carácter ®.

string originalString = "whatever®"; 
string stuff = "something else"; 
char registered = (char)174; 
string replacedString = originalString.Replace(registered, stuff); 

ref: http://msdn.microsoft.com/en-us/library/x9h8tsay.aspx

0

intenta utilizar caracteres Unicode para reemplazar esta símbolos.

 string x = "® ™ dwdd2"; 
     string y = x.Replace('\u00AE', 'X'); 

Está funcionando ;-)

http://msdn.microsoft.com/en-us/library/aa664669%28v=vs.71%29.aspx

y una lista de charakters:

http://en.wikipedia.org/wiki/List_of_Unicode_characters

+0

Eso es basura invalidsyntax ... Estoy reemplazando a ® con el char X ... tal vez debería leer msdn http://msdn.microsoft.com/en-us/library/czx8s9ts.aspx – Smokefoot

+0

Terminé usando 'code'name = name.Replace ("\ u00AE", "\ u00AE");' código ' – bigamil

0

Funciona para mí:

var myString = "Hello world ®, will this work?"; 
var result = myString.Replace("®", "something else"); 
Console.WriteLine(result); 

resultados en:

Hola mundo, algo más, ¿funcionará?

Lo puedes ver en run here.

¿Su cadena original realmente contiene ese carácter o contiene algo así como una entidad html: ® o ® u otra versión "codificada" de ese carácter?

Cuestiones relacionadas