2011-08-24 82 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实体的东西:®®或该字符的其他“编码”版本?