检测并转义所有特殊字符

Detect and escape all special char

本文关键字:特殊字符 转义 检测      更新时间:2023-09-26

我有一个字符串,用于发送到邮件。

我想找到所有的特殊字符,然后转义它们,使我的mailto工作良好,而不避免选择写特殊字符。

例如,如果我的字符串包含一个#,我的邮件正文将停在它之前。

String strCmd = String.Format("window.open('"mailto:{0}?subject={1}&body={2}'");",
                    toEmail, subject, body);

如果我的字符串主体是:

body = "This is a string to test c# code with a mailto";

那么邮件将包含This is a string to test c

如何解决这个问题,以获得This is a string to test c# code with a mailto ?

如果有的话,它也必须是backLine。

谢谢。

这并不是真正关于转义特殊字符,而是将字符串编码为可以由javascript调用window.open处理的有效URL。即使是像<,>这样的"正常"字符,在处理url时也被认为是特殊的。

幸运的是,. net已经可以用httutility . urlencode将字符串编码为URL。这个调用将替换特殊字符,如<和>的URL编码值%3c和%3e。

应该注意只对传递给String的形参进行编码。格式,而不是整个格式化字符串,因为UrlEncode将编码整个字符串,包括?和,人物:

String strCmd = String.Format("window.open('"mailto:{0}?subject={1}&body={2}'");",
                HttpUtility.UrlEncode(toEmail), 
                HttpUtility.UrlEncode(subject), 
                HttpUtility.UrlEncode(body));