如何在字符串中编写上标并使用MessageBox.Show()显示?

20

我想通过消息框输出面积,例如应该显示为256单位^2...

我该如何编写上标(用于幂运算)和下标(例如氧气的O2)?

这个人在字符串中添加了上标,比如(TM):

在字符串中添加TM上标

希望我表达清楚了!提前感谢您的帮助,对任何不便请见谅...

3个回答

38

你可以尝试使用Unicode上下标,例如:

var o2 = "O₂";       // or "O\x2082"
var unit2 = "unit²"; // or "unit\xB2"

如果那不起作用,恐怕你可能需要自己编写消息框。


这里是上标和下标 维基百科。这里是如何在C#中转义Unicode字符MSDN - Jonesopolis
嘿,三次方怎么办?我用'\xB3'替换了'\xB2',但它并没有起作用。 - Jim
2
@Jim 嗯,这对我有效(在 Windows 7 Pro 上测试过)。我想知道你的系统上的字体是否没有上标 3 的字形。 - p.s.w.g

0

我已经使用了这个扩展来实现上标。

    public static string ToSuperScript(this int number)
    {
        if (number == 0 ||
            number == 1)
            return "";

        const string SuperscriptDigits =
            "\u2070\u00b9\u00b2\u00b3\u2074\u2075\u2076\u2077\u2078\u2079";

        string Superscript = "";

        if (number < 0)
        {
            //Adds superscript minus
            Superscript = ((char)0x207B).ToString();
            number *= -1;
        }


        Superscript += new string(number.ToString()
                                        .Select(x => SuperscriptDigits[x - '0'])
                                        .ToArray()
                                  );

        return Superscript;
    }

调用它

string SuperScript = 500.ToSuperScript();

0

我一直在使用 HTML 字符串格式化,在 Unity 的 C# 中似乎可以很好地解码,并且比有限的 Unicode 上下标选项提供了更多的灵活性,例如:

string To256PowerOf2String = "256<sup>2</sup>";
string H2OString = "H<sub>2</sub>O"; 

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接