这是代码:
private void BtnScrambleText_Click(object sender, EventArgs e)
{
textBox1.Enabled = false;
BtnScrambleText.Enabled = false;
StringBuilder sb = new StringBuilder();
var words = textBox1.Text.Split(new char[] { ' ', '"', ',', '-', '>', '\r', '\n', ':', '.', '<', '/', '=', '\\' }, StringSplitOptions.RemoveEmptyEntries);
int index = 0;
int nextIndex = 0;
for (int i = 0; i < words.Length; i++)
{
string word = words[i];
int wordWidth = word.Length;
index = textBox1.Text.IndexOf(word, index);
string t = textBox1.Text.Substring(nextIndex, index);
textBox2.AppendText(t);
string s = textBox1.Text.Substring(index, wordWidth);
if (index == -1) break;
if (word.Length > 0)
{
ScrambleTextBoxText scrmbltb = new ScrambleTextBoxText(s.Trim());
scrmbltb.GetText();
sb.Append(word.Replace(s.Trim(), scrmbltb.scrambledWord));
textBox2.AppendText(sb.ToString());
}
}
}
我知道还有其他方法,但我想使用 indexof 和 substring。
首先我从文本框中获取所有单词并将它们添加到变量单词中。然后在循环中首先获取textBox1的内容直到第一个单词并将其添加到textBox2。
然后我找到第一个单词索引,然后是子字符串,所以变量 s 包含单词。我打乱了这个词,然后将这个词添加到 textBox2。这个想法是:
- 添加内容直到第一个单词。
在第一个内容之后添加打乱的单词。
从最后一个找到的单词添加下一个内容,直到下一个单词。
- 在最后一个位置最后索引下一个加扰的单词。
依此类推,最后 textBox2 中的内容将与 textBox1 中的格式相同,但 textBox2 中的单词将被打乱。
问题是当我单击按钮时,它会多次将内容和单词添加到 textBox2 并造成很多混乱。
为什么那我该如何解决?
编辑**
例如,在向 textBox1 输入手动文本时:
? where am i ? ! hello im here -----
_______________
大家好,几点钟了?: >
我在几个空格后开始输入 textBox1 然后添加了一些字符,例如 - ?> 然后我按下回车键并添加了另一行。
textBox2 中的结果是:
wrhee hlelo hree ----- _ __ _ ___
waht tmie evoyrnee
我需要的单词被打乱了,问题是它没有复制标志?并且 > 并且它没有复制其余未被加扰的内容。话:是少数我喜没有复制到textBox2。
我希望将整个内容复制到带有空格和所有内容的 textBox2,但只有我需要加扰的单词。
打乱部分正在工作,但内容副本没有。