Я пытаюсь создать программу, которая преобразует японские символы в символы английского языка, но у меня есть странная проблема, и я не могу понять, как ее решить, я выяснил, что вызвало это хоть.Проблемы с if и else if, C#
Я использую набор данных, и я использую этот код, чтобы преобразовать символы
Моя проблема заключается в том, что она не хочет, чтобы преобразовать некоторые символы и символы, что не хочет, чтобы преобразовать в основанный на том, что я установил здесь:
// Sets fromtype to the type the character(s) currently is/are
string fromtype = "";
if (CharacterTable.Select("Romaji like '%" + character + "%'") != null)
{
fromtype = "Romaji";
}
else if (CharacterTable.Select("Hiragana like '%" + character + "%'") != null)
{
fromtype = "Hiragana";
}
else if (CharacterTable.Select("Katakana like '%" + character + "%'") != null)
{
fromtype = "Katakana";
}
Если изменить каждую отдельную строку «если», то он не хочет признавать ромадзи символы, если я установить его на «иначе если» как сейчас, это видит.
Вот полный код:
DataSet CharacterDatabase = new DataSet();
DataTable CharacterTable = CharacterDatabase.Tables.Add();
//-- Add columns to the data table
CharacterTable.Columns.Add("Romaji", typeof(string));
CharacterTable.Columns.Add("Hiragana", typeof(string));
CharacterTable.Columns.Add("Katakana", typeof(string));
//-- Add rows to the data table
CharacterTable.Rows.Add("a", "?", "?");
// Sets fromtype to the type the character(s) currently is/are
string fromtype = "";
if (CharacterTable.Select("Romaji like '%" + character + "%'") != null)
{
fromtype = "Romaji";
}
else if (CharacterTable.Select("Hiragana like '%" + character + "%'") != null)
{
fromtype = "Hiragana";
}
else if (CharacterTable.Select("Katakana like '%" + character + "%'") != null)
{
fromtype = "Katakana";
}
// generates a new variable to store the return in
DataRow[] filteredRows = CharacterTable.Select(fromtype + " like '%" + character + "%'");
// Return the converted character in the requested type
foreach (DataRow row in filteredRows)
{
if (RequestedCharType == 1)
{
return row["Romaji"].ToString();
}
if (RequestedCharType == 2)
{
return row["Hiragana"].ToString();
}
if (RequestedCharType == 3)
{
return row["Katakana"].ToString();
}
}
// if it couldn't find the character, return the original character
return character;
Кажется, вы решили свой собственный вопрос. Какая остальная проблема, если таковая имеется? – ziesemer
Оставшаяся проблема заключается в том, что я использую, если или нет, если всегда есть что-то, что не конвертируется, и я слишком глуп, чтобы понять, почему – user1071461
Если вы используете все Ifs, то вы, вероятно, переписываете значение, которое вы найдите в своем первом случае, если попав в другое. Если вы также установили значение для «fromtype». Я не слишком хорошо знаком с этим CharacterTable, который вы используете, но я также подозреваю, что вы можете получить более точные результаты, просто имея три массива или списки romaji, hiragana и katakana и пробираясь каждый, чтобы узнать, какой массив прошел символ находится с окончательным ==, а не «как». Не должно быть проблем с производительностью, из-за того, насколько малы эти массивы или списки. – CptSupermrkt