我有一个需要unicode值才能显示上标字符的UI。数据即将入站具有html代码。我唯一看到的问题是它需要额外的反斜杠。我要在EncodeNonAsciiCharacters中传递一个字符串“®”。
有什么方法可以返回
\u00AE
而不是\\u00AE
static string EncodeNonAsciiCharacters(string value)
{
StringBuilder sb = new StringBuilder();
foreach (char c in value)
{
if (c > 127)
{
string encodedtext = ((int)c).ToString("x4");
//string encodedValue = "\\u" + encodedtext.ToUpper();
string encodedValue = @"\u" + encodedtext.ToUpper();
sb.Append(encodedValue);
}
else
{
sb.Append(c);
}
}
return sb.ToString();
}
答案 0 :(得分:3)
我已经编写了一个程序来演示您的要求。如果在字符串之前使用@,则无需转义字符串文字。这意味着按字面意义解释字符串(也就是说,如果使用@前缀,则不能转义字符串中的任何字符)。在可以使用的情况下,它提高了可读性。
using System;
using System.Text;
public class Program
{
public static void Main()
{
string value="⁸ ⁹ ⁺ ⁻ ⁼ ⁽ ⁾ ₀ ₁ ₂ ₃ ₄ ₅ ₆ ₇ ₈ ₉ ₊ ₋ ₌ ₍ ₎ ®";
StringBuilder sb = new StringBuilder();
foreach (char c in value)
{
if (c > 127)
{
string encodedtext = ((int)c).ToString("x4");
string encodedValue = @"\u" + encodedtext.ToUpper();
sb.Append(encodedValue);
//Console.WriteLine(encodedValue);
}
else
{
sb.Append(c);
}
}
Console.WriteLine(sb.ToString());
}
}
输出:
\u2078
\u2079
\u207A
\u207B
\u207C
\u207D
\u207E
\u2080
\u2081
\u2082
\u2083
\u2084
\u2085
\u2086
\u2087
\u2088
\u2089
\u208A
\u208B
\u208C
\u208D
\u208E
\u00AE