2011-08-24 10 views
5

Fondamentalmente quello che sto cercando di fare è sostituire un simbolo come ™, ® ecc con qualcos'altro, ma quando chiamo C# String.Replace non trovare/sostituzione Simbolo (™, ®)

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

La sua non lo fa fai qualcosa

Qualche idea?

+0

per favore mostrare un po 'di codice. –

+1

Ti ricordi di riassegnare la stringa? – Brandon

+1

Sì, in seguito riassegnerò la stringa. Modificherò la domanda per renderla più chiara. – bigamil

risposta

6

provare myString.Sostituisci ("\ u00A9", "else"); devi sfuggire al ©

+0

Hey man you avevano ragione! Avevo bisogno della versione codificata del simbolo. Grazie mille! – bigamil

+0

oh 00A9 = il marchio d'autore, ho pensato che fosse quello che volevi, 00AE è davvero il r coso – killie01

0

Ricordate che string.Replace restituisce una nuova stringa, quindi è necessario ri-assegnare

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

Quando si utilizza String.Replace si crea una nuova stringa. È un errore molto comune credere che la stringa fornita sia stata modificata. Tuttavia, le stringhe in .NET sono immutabili e non possono essere modificate.

si deve chiamare in questo modo:

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

Presumo che il vostro errore è nel chiamare Sostituire senza assegnare il risultato a nulla.

senza vedere il codice è difficile da indovinare, ma qualcosa di simile dovrebbe funzionare:

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

Può essere probabile che C# non piace il simbolo registrato letterale. Suggerirei di provare a sostituire il personaggio usando un codice carattere, usando il valore integrale, hex o unicode.

Di seguito è riportato un esempio che utilizza il valore integrale del carattere ®.

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

tenta di utilizzare i caratteri Unicode per sostituire questi simboli.

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

Si sta lavorando ;-)

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

e un elenco di Charakters:

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

+0

Quella trash invalidsyntax ... Sto sostituendo ® con il carattere X ... forse dovresti leggere msdn http://msdn.microsoft.com/en-us/library/czx8s9ts.aspx – Smokefoot

+0

Ho finito per usare 'code'name = name.Replace ("\ u00AE", "\ u00AE"); "codice" – bigamil

0

Funziona per me:

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

in:

Ciao mondo qualcos'altro, funzionerà?

È possibile vederlo run here.

La stringa originale contiene effettivamente quel carattere o contiene qualcosa come un'entità html: ® o ® o altra versione "codificata" di quel carattere?

Problemi correlati