将SuperScript应用于C#字符串以进行Xsl转换所需的建议

时间:2018-02-07 20:57:37

标签: c# xslt superscript

我想将SuperScript应用于字符串以进行显示 它适用于上标中的数字,不适用于字符串字符。 建议需要。

适用于: var o2 =“O 2”; //或“O \ x2082” var unit2 =“unit²”; //或“unit \ xB2”

不起作用: var xyz =“ABC365 \ xBTM”

无法通过字符串ABC365获得TM上标。

建议表示赞赏。

1 个答案:

答案 0 :(得分:0)

你似乎完全误解了这里发生了什么,所以我会尝试一个非常基本的解释。

Unicode定义了大量字符(如果我没记错的话,大约1,114,111)。这些来自大量的历史资料,并没有什么伟大的押韵或理由,哪些角色成功,哪些没有。可用字符包括一些下标和上标数字,例如x2082是下标2,x00B2是上标2.它还包括一些特殊符号,例如商标符号x2122,传统上用上标外观呈现。

但是在Unicode中没有通用机制来渲染上标或下标中的任何字符。如果你想写X n ,Unicode将无法帮助你:实现我必须求助于Unicode以外的机制,特别是HTML标记。 HTML允许您以下标或上标的形式呈现任何内容; Unicode只处理一些选择的情况。

C#识别转义序列\ xHH和\ xHHHH(取决于上下文),其中H是任何十六进制数字,用于表示Unicode代码点值的特殊字符。因此,如果有一个代码点x2082意味着下标2,则可以将其作为\ x2082写入Unicode字符串文字中。但是对于下标 - 小写 - 斜体N没有代码点,所以没有办法表示它。

现在当你写\xBTM时,应该清楚这是胡说八道。 \x必须后跟2或4个十六进制数字(取决于上下文)。如果您需要商标符号,可以使用\ x2122。如果你想要上标中的两个字符“T”和“M”,那你就运气不好;如果你需要在你的应用程序中传递那种东西,你需要传递包含HTML标记的字符串,而不仅仅是普通的Unicode。

您表示您正在尝试创建将用作XSLT转换输入的字符串。我的建议是传递XML文档而不是简单的字符串:但我需要更详细地理解这个要求,然后才能说明这是正确的解决方案。