2011-08-24 84 views
5

基本上我想要做的是更換喜歡™,®等標誌與別的東西,但是當我打電話C#不與string.replace查找/替換符號(™,®)

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

它不做任何事

任何想法?

+0

請顯示一些代碼。 –

+1

你記得重新分配字符串嗎? – Brandon

+1

是的,我稍後重新分配字符串。我會編輯這個問題,使其更清楚。 – bigamil

回答

6

try myString。替換(「\ u00A9」,「其他」); 你必須轉義©

+0

嘿,你是對的!我需要符號的編碼版本。謝謝一堆! – bigamil

+0

哦00A9 =版權標記,我以爲這是你想要的, 00AE確實是r thingy – killie01

0

記住string.Replace返回一個新字符串,所以你需要在使用String.Replace您創建一個新的字符串來重新分配它

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

。相信提供的字符串被修改是一個非常常見的錯誤。但是,.NET中的字符串是不可變的,不能修改。

你要這樣稱呼它:

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

我認爲你錯就錯在不調用分配結果的任何替換。

沒有看到你的代碼是很難猜測,但這樣的事情應該工作:

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

這可能是可能是C#不喜歡的文字註冊的符號。我會建議嘗試使用字符代碼替換字符,使用整數值,十六進制或unicode。

以下是使用字符的整數值的示例。

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

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

0

嘗試使用Unicode字符來代替這個符號。

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

它的工作;-)

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

而且Charakters的列表:

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

+0

這就是垃圾invalidsyntax ...我用char X替換®...也許你應該閱讀msdn http:/ /msdn.microsoft.com/en-us/library/czx8s9ts.aspx – Smokefoot

+0

我最終使用'code'name = name.Replace(「\ u00AE」,「\ u00AE」);'code' – bigamil

0

它爲我的作品:

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

結果於:

你好世界別的東西,這個工作嗎?

你可以看到它run here

您的原始字符串是否真的包含該字符,或者它是否包含類似於html實體的東西:®®或該字符的其他「編碼」版本?