![](/img/trans.png)
[英]I am trying to do linear search of array elements(string) inside a list but I have a problem
[英]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.