text=text.Replace("con", "55");
text = text.Replace("et", "8");
Получение результата из двух переменных
Код:
string result = "";
string text = textBox2.Text;
text=text.Replace("con", "55");
text = text.Replace("et", "8");
string text = textBox2.Text;
text=text.Replace("con", "55");
text = text.Replace("et", "8");
Код:
for (int i = 0; i < text.Length; i++)
{
string letter = text[i].ToString();
foreach (DataGridViewColumn column in dataGridView1.Columns)
{
if (column.HeaderText == letter)
{
string cellValue = dataGridView1.CurrentRow.Cells[column.Index].Value.ToString();
var values = cellValue.Split(' ');
int index = rnd.Next(values.Length);
result += values[index];
}
}
}
listBox1.Items.Add(result);
{
string letter = text[i].ToString();
foreach (DataGridViewColumn column in dataGridView1.Columns)
{
if (column.HeaderText == letter)
{
string cellValue = dataGridView1.CurrentRow.Cells[column.Index].Value.ToString();
var values = cellValue.Split(' ');
int index = rnd.Next(values.Length);
result += values[index];
}
}
}
listBox1.Items.Add(result);
Код:
2) Как-то уж слишком страшно выглядит код. Возможно вам стоит посмотреть, что такое Dictionary и перегнать туда "словарь" заменяемых слов.
Несколько дико выглядит ToString() для отдельного символа. Символы можно сравнивать и без конвертации в строку.
3) Я так и не понял, что и куда требуется сливать. result - это ведь строковая переменная? Запись "result +=" как раз будет добавлять к ней требуемое значение. Что нужно то?
Цитата: P*t*
1) Вот так писать нельзя:
Дело в том, что твои цифры 55 потом обработаются повторно, если окажутся в списке преобразуемых символов.
2) Как-то уж слишком страшно выглядит код. Возможно вам стоит посмотреть, что такое Dictionary и перегнать туда "словарь" заменяемых слов.
Несколько дико выглядит ToString() для отдельного символа. Символы можно сравнивать и без конвертации в строку.
3) Я так и не понял, что и куда требуется сливать. result - это ведь строковая переменная? Запись "result +=" как раз будет добавлять к ней требуемое значение. Что нужно то?
Код:
text=text.Replace("con", "55");
text = text.Replace("et", "8");
text = text.Replace("et", "8");
2) Как-то уж слишком страшно выглядит код. Возможно вам стоит посмотреть, что такое Dictionary и перегнать туда "словарь" заменяемых слов.
Несколько дико выглядит ToString() для отдельного символа. Символы можно сравнивать и без конвертации в строку.
3) Я так и не понял, что и куда требуется сливать. result - это ведь строковая переменная? Запись "result +=" как раз будет добавлять к ней требуемое значение. Что нужно то?
В общем нужно как-то сделать так, чтобы сочетание букв, для которого есть отдельный символ, кодировалось именно им. А в foreach это не делается, не понимает столбец DataGrig сочетание букв, как единое целое и работает этот цикл только для букв, а не слогов. Т.е. если я напишу "acon", то мне зашифруется каждая буква из четырех, а не буква и слог. Вот и не знаю как это решить, думал что сначала зашифровать слоги, если таковые есть, а потом перейти в цикл к буквам. Помогите пожалуйста)
Код:
Dictionary<string, int> dict = new Dictionary<string, int>()
{
{"con", 55},
{"et", 8},
{"a", 1},
};
string input = "acon";
string answer = "";
while (input.Length > 0) {
foreach (var pair in dict)
{
if (input.StartsWith(pair.Key)) {
answer += pair.Value;
input = input.SubString(pair.Key.Length, input.Length-pair.Key.Length);
break;
}
}
}
{
{"con", 55},
{"et", 8},
{"a", 1},
};
string input = "acon";
string answer = "";
while (input.Length > 0) {
foreach (var pair in dict)
{
if (input.StartsWith(pair.Key)) {
answer += pair.Value;
input = input.SubString(pair.Key.Length, input.Length-pair.Key.Length);
break;
}
}
}
P.S чуть исправил
Цитата: P*t*
Ну например что-нибудь такое:
C# я не люблю, так что скорее всего сходу это не заработает и нужно будет что-нибудь исправить.
Код:
Dictionary<string, string> dict = new Dictionary<string, int>()
{
{"con", 55},
{"et", 8},
{"a", 1},
};
string input = "acon";
string answer = "";
while (input.size() > 0) {
foreach (var pair in dict)
{
if (input.StartsWith(pair.Key)) {
answer += pair.Value;
input = input.SubString(pair.Value.size(), input.size()-pair.Value.size());
break;
}
}
}
{
{"con", 55},
{"et", 8},
{"a", 1},
};
string input = "acon";
string answer = "";
while (input.size() > 0) {
foreach (var pair in dict)
{
if (input.StartsWith(pair.Key)) {
answer += pair.Value;
input = input.SubString(pair.Value.size(), input.size()-pair.Value.size());
break;
}
}
}
да, что-то много незнакомого, ну я попробую, спасибо! А это все делается перед for?
ассоциативный массив.
Основная его функциональность в моем примере не используется, но это определенно лучше, чем при обработке каждого следующего символа заного доставать значения откуда-то из недр графического интерфейса (DataGridViewColumn)
Dictionary - это
Основная его функциональность в моем примере не используется, но это определенно лучше, чем при обработке каждого следующего символа заного доставать значения откуда-то из недр графического интерфейса (DataGridViewColumn)
А что-то он у меня все ругается вот здесь: text2 = text2.Substring(pair.Value, text2.Length-pair.Value); Типа startIndex не может быть больше, чем длина строки.
Цитата: game777
А что-то он у меня все ругается вот здесь: text2 = text2.Substring(pair.Value, text2.Length-pair.Value); Типа startIndex не может быть больше, чем длина строки.
pair.Value исправь на pair.Key.Length