簡體   English   中英

我正在嘗試在數組中搜索Unicode值

[英]I am trying to search array for Unicode value

我有一個大型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];

現在,我無法工作了。 在另一個選項卡中,用戶輸入了一個字符,我們檢查數組以找到它,然后打印出可能說“ Winner”的第一項

在下面的用於輸入AI的名為Unicodevalue的字符串中,無法使其為\\ u0041。 它總是返回雙斜杠,但我只想一個斜杠\\ \\ u0041。 如何從RichTextBox中讀取文本並將其轉換為字符串\\ u0041,與上面的Array中的文本相同?

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]);
            }
        }

事實是,您沒有在字符串數組MagicString存儲“ \\ u0041”。 您將“ \\ u0041”放入其中,這是一種正確的unicode語法,因此c#在內部將其轉換為“ A”(或任何字符41)。

您的錯誤在於MagicString的聲明中。 您需要在其中放置@"\A" 如果這不起作用,請通過放置@"\\" + "u0041"作弊,以使C#將其存儲為字符串。

感謝幫助。 格里斯格拉姆給了我我錯過的線索。 在數組“ \\ u0041”中,是字符而不是字符串。 一旦我看到我想出了解決方法。 當我將它們繪制到gridview時,必須將它們保留為Unicode Char。

因此,在進行了一些更改之后,我現在將Unicode字符轉換為整數,然后使用它們

int InPutChar = Convert.ToInt32(rchtxbx_input.Text[i]);

char c = '\u3400';
int LowestMagicChar = c;

下面的代碼片段其余部分

for (int i = 0; i < rchtxbx_input.Text.Length; i++)
        {

            string answers = "";

            int InPutChar = Convert.ToInt32(rchtxbx_input.Text[i]);

            char c = '\u3400';
            // Implicit conversion: char is basically a 16-bit unsigned integer
            int LowestMagicChar = c;

            bool doCheck = true, multipleChar = false; //set true if statements will set false.

            if (InPutChar < LowestMagicChar) 
            {
                rchtxbx_output.AppendText(rchtxbx_input.Text[i].ToString());
                doCheck = false;
            }

            if (doCheck == true) //Could be MagicChar so more checks inside
            {
                for (int j = 0; j < MagicString.Length; j++)
                {

                    string[] InnerCharArray = MagicString[j];

                    for (int k = 1; k < InnerCharArray.Length; k++)
                    {
                        string unichar = InnerCharArray[k]; //Get next char to check


                        if (rchtxbx_input.Text[i].ToString() == unichar) //&& (doCheck))
                                                                         //check with the char in textbox
                        {
                            if (doCheck == true)
                            {
                                answers = InnerCharArray[0]; //first time in we have one char
                            }
                            else
                            {
                                answers += ";" + InnerCharArray[0]; //comes in here if multiple chars for same sound
                                multipleChar = true;
                            }
                            // rchtxbx_output.AppendText(InnerCharArray[0] + " ");
                            //If the char then put down the sound and space.
                            doCheck = false;

現在,我可以正常工作了,只需要使其變得更好,更快即可。 多虧了所有人的幫助,我們經常看不到明顯的東西,除非指出來。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM