读书人

replace的有关问题 有点奇怪

发布时间: 2012-03-03 15:33:03 作者: rapoo

replace的问题 有点奇怪
数据库是这样的:[表名:NEWS_SECTIONS]
00 首
10,1 通知
20,2 公告
30,3 通
40,1,4 部通知
50,1,5 外部通知
60,2,6 一般公告
70,2,7 重要公告
80,1,4,8 人事部通知
90,1,4,9 技部通知
10 0,1,5,10 "要显示的东西 "
id的关系相信一看就清楚吧。此页面有个DropDownlist,我要做的是:循环读取数据,然后把读出来的数据加载到DropDownlist,加载出来的效果是
> 首页
> 首页> 通知
> 首页> 通知> 内部通知
...
> 首页> 通知> 外部通知> “要显示的东西”(注意这里id已经变成2位数)

先看我的方法:
public void additmes()
{
string items_id = " ";
string name = " ";
//加入第一
//取所有link字段
string allitems = "select LINK from NEWS_SECTIONS order by LINK ";
//取集
ds1 = db.getDataSet(allitems, "NEWS_SECTIONS ");
//字段行
int num = ds1.Tables[ "NEWS_SECTIONS "].Rows.Count;
//1取值
for (int i = 0; i < num; i++)
{
//循值
items_id = ds1.Tables[ "NEWS_SECTIONS "].Rows[i][0].ToString();
//得到示格式
items_id = items_id.Replace( ", ", "> ");

string[] arr = items_id.Split( '> ');
for (int j = 0; j < arr.Length; j++)
{
//Response.Write(arr[j]+ " ");
string getname = "select SECTIONS_NAME from NEWS_SECTIONS where SECTIONS_ID= " + arr[j];
//一行一列的集
ds2 = db.getDataSet(getname, "NEWS_SECTIONS ");


//得到每分隔id的名
name = ds2.Tables[ "NEWS_SECTIONS "].Rows[0][0].ToString();
//Response.Write(name);
//替根查出的名
items_id = items_id.Replace(arr[j],name);
}

parent.Items.Add( "> "+items_id);

}
//Response.Write(str);
//Response.Write(items_id);
}
但加载出来的id为10的那个却变成了:
> 首页> 通知> 外部通知> 通知首页, 也就是replace方法按逐字符给我替换了。。根本没显示出我想要的
> 首页> 通知> 外部通知> “要显示的东西”

请问是怎么回事,是replace用错了吗? 我测试其他的replace可以整字符串替换的啊,这里只不过是从数据库读出编号id替换成名称罢了,不解了, 求救!!!

[解决办法]
不是 Replace 的问题,而是一个逻辑问题,

LZ 应该先替换多位数的,再替换位数少的,比如下面这个

string str = "1,2,3,123 ".replace( "1 ", "A "); // 结果是 A,2,A23

或者用正则严格匹配
[解决办法]
sorry,

string str = "1,2,3,123 ".replace( "1 ", "A "); // 结果是 A,2,3,A23

即替换所有匹配的字符
[解决办法]
学习

读书人网 >asp.net

热点推荐