回顾一下我的一些旧代码,并想知道是否有更好的方法来创建带有unicode符号的文字字符串......
我有一个REST接口,需要某些转义字符;例如,一个名为username的属性,其值为john%foobar + Smith,必须像这样请求:
{"username":"john\u0025foobar\u002bSmith"}
我的c#方法替换像%和+这样的某些字符非常基本:
public static string EncodeUTF8(string unescaped) {
string utf8_ampersand = @"\u0026";
string utf8_percent = @"\u0025";
string utf8_plus = @"\u002b";
return unescaped.Replace("&", utf8_ampersand).Replace("+", utf8_plus).Replace("%", utf8_percent);
}
这似乎是一种过时的方式;肯定有一些使用编码的单行方法可以输出文字的UTF代码,但我找不到任何基本上没有像我一样替换语句的例子......有更好的方法吗?
答案 0 :(得分:1)
您可以使用正则表达式执行此操作:
static readonly Regex ReplacerRegex = new Regex("[&+%]");
public static string Replace(Match match)
{
// 4-digits hex of the matched char
return @"\u" + ((int)match.Value[0]).ToString("x4");
}
public static string EncodeUTF8(string unescaped)
{
return ReplacerRegex.Replace(unescaped, Replace);
}
但我不建议(除非你有几十次替换)。我认为它会更慢,更大写。