C#下标字符串包括变量

时间:2014-08-13 10:58:36

标签: c# string

我知道在C#中编写下标,我应该使用Unicode 例如 我想写H 2 O,我应该写

String str = "H"+"\x2082"+ "O"

但是我想在公式中使用变量类型的int而不是2 如何创建一个带变量的字符串,用下标写?

4 个答案:

答案 0 :(得分:1)

This wikipedia article显示超级和下标符号的所有unicode代码。

您只需创建一个映射这些的方法:

public string GetSubScriptNumber(int i)
{
    // get the code as needed
}

我会提供一些提示来帮助你:

  • 很遗憾,您不能只执行return "\x208" + i,因此您需要切换数字0-9或将整数添加到"\x2080"
  • 如果您只需要0-9,请执行一些错误检查,确认输入在该范围内并抛出ArgumentOutOfRangeException
  • 如果您需要所有int s,那么您可能会发现更容易将其分成每个数字并为每个数字获得char - 注意负数但是下标有一个字符减号!

要在字符串中包含该数字,您可以使用String.Format

之类的内容
String.Format("H{0}O", GetSubScriptNumber(i))

答案 1 :(得分:1)

在Unicode中,下标数字被分配了连续的代码点,范围从U+2080U+2089。因此,如果您将Unicode字符用于下标0 - 即'₀' - 那么您可以通过将其数值添加到前一个代码点来获取任何其他数字的下标字符。

如果您的整数只包含一位数字:

int num = 3;
char subscript = (char)('₀' + num);   // '₃'

如果您的整数可能包含任意数量的数字,那么您可以分别对每个数字应用相同的加法。枚举整数数字的最简单方法是将其转换为字符串,并使用LINQ Select运算符来获取单个字符。然后,从每个字符中减去'0'以获取数字的数值,并将其添加到'₀',如上所述。以下代码假定num为非负数。

int num = 351;
var chars = num.ToString().Select(c => (char)('₀' + c - '0'));
string subscript = new string(chars.ToArray());   // "₃₅₁"

答案 2 :(得分:0)

试着逃避它

String str = "H" + "\\x2082" + "O";

或使用详细字符串

String str = "H" + @"\x2082" + "O";

答案 3 :(得分:0)

也许我们不理解你的问题。上面的几个答案似乎是正确的。这有用吗?

static string GetSubscript(int value)
{
  StringBuilder returnValue = new StringBuilder();
  foreach (char digit in value.ToString())
    returnValue.Append((char)(digit - '0' + '₀'));
  return returnValue.ToString();
}

string waterFormula = "H" + GetSubscript(2) + "0"  // H₂O
string methaneFormula = "CH" + GetSubscript(4) // CH₄