如何在C#中格式化上标字符串?

3

我需要在C#代码中对一些字符串进行上标格式化。

例如,

输入 => 100 输出 => 10^2

其中输出<string>是一个Clr属性

我尝试了下面的代码片段:

 TextBlock _textBlock = new TextBlock();
    _textBlock.Text = "10";
    _textBlock.Inlines.Add(new Run() { BaselineAlignment  = BaselineAlignment.Superscript, Text = "2"});

在上述情况下,由于Typography是只读属性,我无法在代码后端设置Typography.Variants
请注意:此问题与渲染无关,而是关于将Text作为string进行读取。预期值为10^2。在建议重复时,请检查其他问题是否解决了此问题。
有人可以指导我吗?
还有,当像上面提到的代码片段一样设置BaselineAlignment.Superscript时,它不会呈现为上标(小字体),而是以相同的FontSize呈现(看起来像仅为上标内容设置Margin属性,如new Thickness(0,0,0,FontSize))。

我不明白你的场景有什么不同?你提到的这个片段目前对我来说运行良好。我可以看到 10^2 - Sriram Sakthivel
@SriramSakthivel,你能在_textBlock.Text中获取 10^2 吗? - Joy Rex
是的,我刚试了一下,得到了10^2。相信我。 - Sriram Sakthivel
@SriramSakthivel,我已经使用“立即窗口”进行了检查,但是对于提供的代码片段,我仍然只能在“_textBlock.Text”属性中获得“10”。您能否分享您所使用的代码片段(如果有任何修改)? - Joy Rex
我认为他想要格式化成这样的 10²。 - Steve
显示剩余4条评论
1个回答

3

10^2 不是唯一的情况,因此我可以使用数字 2 的 Unicode。但它可以是任何数字(如 75^289)。那么,在这种情况下,通过 Unicode 支持是否可能实现? - Joy Rex
是的,请在上面的链接中查找排版变体。 - Steve
@DarrrenYoung,如之前所述,我可以直接使用 Typography 在 UI 中呈现。但我的要求是将上标值(例如 10^2)设置为字符串属性。因此,我无法在代码后台通过 Typography 实现它。你能否提供给我任何代码片段? - Joy Rex
@JoyOyiessRex 你解决了吗?我刚刚编辑了我的回答。 - Steve
感谢提供的链接,但Unicode只能用于较小的幂值,例如10²(10的2次方),但我们能否将其用于更大的幂值(如10的63次方)? - Joy Rex
1
是的。Console.WriteLine("10\x2076\xB3"); - Steve

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