首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 网站开发 > asp.net >

replace的有关问题 有点奇怪

2012-03-03 
replace的问题有点奇怪数据库是这样的:[表名:NEWS_SECTIONS]00首頁10,1通知20,2公告30,3通報40,1,4內部通

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

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

热点排行