【发布时间】:2017-01-18 16:22:45
【问题描述】:
我有一个大型 2D 锯齿边阵列
string[][] MagicString = new string[417][];
MagicString[0] = new string[] { "Winner", "\u0041", "\u0042", "\u0043"};
//and so on only show first item in 2D here.
字符串是 \u 以使它们成为 Unicode 值。当我们在数组中移动时,我将它们作为 Unicode,我们可以从 ASCII 范围之外获取字符。我还使用这些值在不同的选项卡中显示 Magic 字符串。在上面的例子中,我们在一个单元格中看到 A,然后在下一个单元格中看到 B,然后是 C 等等。所有这些 Unicode 字符串都可以正常工作。
string[] InnerCharArray = MagicString[cmbobx_sounds.SelectedIndex];
..
..
dataGridView1[grid_y, grid_x].Value = InnerCharArray[char_num];
现在我无法开始工作了。在不同的选项卡中,用户输入一个字符,我们检查数组以找到它,然后打印出第一项可能是“赢家”
在下面称为 A 输入的 Unicodevalue 的字符串中,我无法将其设为 \u0041。它总是会返回双斜杠,但我只想要一个斜杠 \u0041。如何从 RichTextBox 中读取文本并将其转换为字符串 \u0041,与上面的数组中的一样?
for (int i = 0; i < rchtxbx_input.Text.Length; i++)
{
string UnicodeValue = @"\u" + String.Format("{0:x4}", Convert.ToInt32(rchtxbx_input.Text[i]));
//tried "\\u" @"\u" just u removed u altogether
for (int j = 0; j < MagicString.Length; j++)
{
string[] InnerCharArray = MagicString[j];
bool has = InnerCharArray.Contains(UnicodeValue);
/never goes true even when I type in A which is 0041 as in Array
if (has) rchtxbx_output.AppendText(InnerCharArray[0]);
}
}
【问题讨论】:
-
还有stackoverflow.com/questions/7826162/…。您应该考虑使用
chars 的数组而不是字符串... -
所有
char都是 UTF-16 代码单元,其中一两个编码一个 Unicode 代码点。 ASCII 与它没有任何关系。字符串是char的计数序列。因此,“\u0041”是一个带有一个代码单元的字符串,恰好是代码点 A 所需的单个代码单元。(换句话说,“\u0041”=="A"。)。