且构网

分享程序员开发的那些事...
且构网 - 分享程序员编程开发的那些事

字符串的切割和提取问题

更新时间:2022-09-11 14:12:58

前一阵子,我的项目中需要用到把数据库中的一个字段根据","符号分割成多列显示在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小日本)。
引用如下:
功能:在一个文本框中输入多个数据,类似图中数据:
字符串的切割和提取问题字符串的切割和提取问题

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

字符串的切割和提取问题字符串的切割和提取问题点击查询时要做的事
1字符串的切割和提取问题protected void btnSel_Click(object sender, EventArgs e)
2字符串的切割和提取问题字符串的切割和提取问题字符串的切割和提取问题{
3字符串的切割和提取问题string strCode = txtManyCode.Text.Trim();
4字符串的切割和提取问题
5字符串的切割和提取问题string[] ArrayStr = strCode.Split(',');
6字符串的切割和提取问题
7字符串的切割和提取问题 List<string> listStr = new List<string>();
8字符串的切割和提取问题
9字符串的切割和提取问题foreach (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'
1字符串的切割和提取问题public static string GetStringFromStringList(List<string> list)
2字符串的切割和提取问题字符串的切割和提取问题字符串的切割和提取问题{
3字符串的切割和提取问题string strList = string.Empty;
4字符串的切割和提取问题foreach (string str in list)
5字符串的切割和提取问题字符串的切割和提取问题字符串的切割和提取问题{
6字符串的切割和提取问题 strList += (strList.Length == 0 ? "" : "','") + str.ToString();
7字符串的切割和提取问题
8字符串的切割和提取问题 }

9字符串的切割和提取问题return "'" + strList + "'";
10字符串的切割和提取问题
11字符串的切割和提取问题 }

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

字符串的切割和提取问题字符串的切割和提取问题List 类型的方法
1字符串的切割和提取问题public static string GetStringFromIntList(List<int> list)
2字符串的切割和提取问题字符串的切割和提取问题字符串的切割和提取问题{
3字符串的切割和提取问题string strList = string.Empty;
4字符串的切割和提取问题
5字符串的切割和提取问题foreach (int id in list)
6字符串的切割和提取问题字符串的切割和提取问题字符串的切割和提取问题{
7字符串的切割和提取问题 strList += (strList.Length == 0 ? "" : ",") + id.ToString();
8字符串的切割和提取问题 }

9字符串的切割和提取问题
10字符串的切割和提取问题return 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,如需转载请自行联系原作者