[CODE] //取得字符串
string temp = this.textBox3.Text.Trim();
//声明缓存
StringBuilder sb = new StringBuilder();
//声明种子
char c;
for (int i = 0; i < temp.Length;i++ )
{
//取得种子
c = temp[i];
//保存种子
sb.Append(c);
//声明索引
int idx = temp.IndexOf(c);
while (idx > -1)
{
//删除重复字符
temp = temp.Remove(idx, 1);
//检索索引
idx = temp.IndexOf(c);
}
}
//还原字符
this.textBox3.Text = sb.ToString();[/CODE]
在做这个题时候发现了一个问题
首先说一下我的思路:
1:我的出发点是检索到一个种子,保存这个种子,马上就删除重复种子的字符。
2:生成新的字符串。
3:重复1。
刚开始我用foreach循环的
foreach(char c in temp)
{
//省略若干;
}
问题:第2步执行完毕执行第三步的时候,循环检索并非是从新生成的字符串里检索,而是按照最初的字符串运行。
比如"haha"执行到第三步的时候字符串temp应该是"aa"
但是foreach检索的时候仍然是"haha",达不到预期的效果
由此看出在执行foreach的时候framework自己建立了自己的数据字典。
当我们在处理变化的变量的时候还是要用到for循环。
[此贴子已经被作者于2007-7-10 10:14:56编辑过]