字符串的切割和提取问题

前一阵子,我的项目中需要用到把数据库中的一个字段根据","符号分割成多列显示在GridView控件中,折腾了半天再搞好。呵呵,看来是本人水平有限,还需要多多努力 ;)

protected void bind_usb() //绑定USB列表到Gridview
{
DataTable m_usb_Table = new DataTable();
m_usb_Table.Columns.Add(new DataColumn("usbinfo", typeof(System.String)));
m_usb_Table.Columns.Add(new DataColumn("usbidinfo", typeof(System.String)));
m_usb_Table.Columns.Add(new DataColumn("usbflag", typeof(System.String)));

ArrayList usbinfo_List = new ArrayList();
ArrayList usbidinfo_List = new ArrayList();
ArrayList usbflag_List = new ArrayList();

string usbinfo_str = MyTable.Rows[0]["usbinfo"].ToString(); //从数据源 MyTable 中取得字符串
if (usbinfo_str == "" || usbinfo_str == null) return;
string usbidinfo_str = MyTable.Rows[0]["usbidinfo"].ToString();
string usbflag_str = MyTable.Rows[0]["usbflag"].ToString();

string[] usbinfo_Array = usbinfo_str.Split(',');
foreach (string usbinfo_Sub in usbinfo_Array)
{
usbinfo_List.Add(usbinfo_Sub);
}
string[] usbidinfo_Array = usbidinfo_str.Split(',');
foreach (string usbidinfo_Sub in usbidinfo_Array)
{
usbidinfo_List.Add(usbidinfo_Sub);
}
string[] usbflag_Array = usbflag_str.Split(',');
foreach (string usbflag_Sub in usbflag_Array)
{
usbflag_List.Add(usbflag_Sub);
}
DataRow MyRow;
for (int i = 0; i < usbinfo_List.Count; i++)
{
MyRow = m_usb_Table.NewRow(); //将 ArrayList 的值赋给 m_cpu_Table.NewRow行
MyRow["usbinfo"] = usbinfo_List[i].ToString();
MyRow["usbidinfo"] = usbidinfo_List[i].ToString();
MyRow["usbflag"] = usbflag_List[i].ToString();
m_usb_Table.Rows.Add(MyRow);
}
GridView usbGrid = this.Hard_DetailsView.FindControl("usbGrid") as GridView;
//usbGrid.Visible = false;
usbGrid.DataSource = m_usb_Table;
usbGrid.DataBind();
}

显示效果:

(注释:部分显示不是乱码,是日语)

事隔多日,今天偶然看见Teracy_Joy 的blog里面也有相关代码,真是相见恨晚。也罢,自己编写的能涨能力(但没有涨工资,TMD小日本)。
引用如下:
功能:在一个文本框中输入多个数据,类似图中数据:
yyttt.JPG

要在服务器端写代码将这些字符串分开后写到一个list里面去,然后在将这个list拼写成SQL语句,弄了好久,终于有了结果,处理起来还真的有点麻烦,要是里面的数据都是整型的话可能好处理一点,现在把每一步的方法帖出来,以后好参考参考:

点击查询时要做的事
1protected void btnSel_Click(object sender, EventArgs e)
2{
3string strCode = txtManyCode.Text.Trim();
4
5string[] ArrayStr = strCode.Split(',');
6
7 List<string> listStr = new List<string>();
8
9foreach (string str in ArrayStr)
10{
11 listStr.Add(str);
12 }
13 DataTable dt = AcerPromotionManager.getWillDeletePromotionCode(listStr);
14
15 dgAcer.DataSource = dt;
16 dgAcer.DataBind();
17
18 }

将那个listStr传到这个里面来构建一个'方法法','fdas','fdsafd','fdsa'
1public static string GetStringFromStringList(List<string> list)
2{
3string strList = string.Empty;
4foreach (string str in list)
5{
6 strList += (strList.Length == 0 ? "" : "','") + str.ToString();
7
8 }
9return "'" + strList + "'";
10
11 }

这样就可以了,把要得到的字符串就可以提取出来了,另外还一个就是要是数据为int型的话只要调用:

List 类型的方法
1public static string GetStringFromIntList(List<int> list)
2{
3string strList = string.Empty;
4
5foreach (int id in list)
6{
7 strList += (strList.Length == 0 ? "" : ",") + id.ToString();
8 }
9
10return strList;
11 }

调用方法一样的,都比较简单的。

把输入的数据中包含有单双引号的字符去掉(以及别的特殊字符)的方法:
public static string GetFormatNameForImgAlt(string str)
{
return str.Replace("'", "&rsquo;").Replace("\"", "&quot;"));
}

发现都是湖南人,组合在一起让大家和自己都一起相互学习。多多指教!




本文转自钢钢博客园博客,原文链接:http://www.cnblogs.com/xugang/archive/2007/08/24/868501.html,如需转载请自行联系原作者


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值