请问如何去掉字符串中重复的字符,谢谢了。 比如一个字符串,string str = "1,2,3,3,2,1";去掉重复的部分,得到 str= "1,2,3";谢谢大家了 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 方法应该比较多,这里提供一个方法给你参考:string str = "1,2,3,3,2,1";string[] arr_str = str.Split(',');ArrayList al = new ArrayList();for(int i = 0; i < arr_str.Length; i++){ bool isExist = false; for(int j = 0; j < al.Count; j++) { if(arr_str[i].ToString() == al[j].ToString()) isExist = true; } if(!isExist) al.Add(arr_str[i]);}string newStr = "";for(int k = 0; k < al.Count; k++){ if(newStr.Trim() == "") newStr += al[k]; else newStr += "," + al[k];}Response.Write(newStr); zorroonline (zorro) ,不好意思!我的帖子老是发不了,路过的人帮我看看。希望你不要生气在一个Web窗体中有: 一个dropdownlist下拉条:ddlField,绑定可以选择的内容有“线路代码”和“线路名称”,他们的value分别为linecode,linename 一个textbox :txtValue 还有一个可以点击的“查找”btnSearch控件 在一个web窗体中两个dataGrid,一个主表grdMain ,一个从表grdDetail 。在grdMain中设置了一个模板列“线路名称”,点击模板列后grdDetail中显示相应的明细记录 首次进入页面时加载数据,从表grdDetail是根据主表grdMain来过滤的,也就是在grdMaster中的行大于零时才会产生grdDetail,在grdDetail中显示的是grdMaster第一行记录的明细 可以在下拉单中选择“线路代码”或是“线路名称”,再在txtValue中输入查找过滤的条件,然后点击btnSearch查找,查找后两个数据表格显示相应的记录。 出错的地方:刚进入页面的时候没有点击任何的模板列,只是直接在主表中翻到第2页,此时我的从表grdDetail中相应地显示出主表第二页第一条记录的明细。但是当我也让从表翻页的时候,主表自动返回到第一页!!这到底是为什么呀?该怎么改?能给点建议吗? 还有就是当我点击模板列从表显示相应的数据后,我再点击主表翻页,从表不会跟着显示主表当前页的第一行明细,而是保持上一次点击的模板列的明细!! 代码如下:private void Page_Load(object sender, System.EventArgs e){ //首次加载数据 if (Request["cp"]!=null) { currentPage =Convert.ToInt32(Request["cp"]); } if (!IsPostBack) {BindData(); } }private void BindData() { ReportQuery reportQuery = new ReportQuery(); DataSet dataSet = null; if (Session["Condition1"] == null) { dataSet = reportQuery.GetAllDeliveryBillMaster(); } else { dataSet =reportQuery.GetDeliveryBillByConditionMaster(Session["Condition1"].ToString()); } grdMain.CurrentPageIndex = currentPage; grdMain.DataSource = dataSet.Tables["tblMaster"].DefaultView; grdMain.DataBind(); //如果主表记录条数 > 0,从表则显示第一条记录的明细 if(dataSet.Tables.Count > 0) { if(dataSet.Tables["tblMaster"].Rows.Count > 0)//或者主表点击了翻页 { string lineCode = Request["LINECODE"]; ViewState["Condition2"] = string.Format("TBO.LINECODE like '%{0}%'", this.grdMain.Items[0].Cells[1].Text.ToString()); dataSet =reportQuery.GetDeliveryBillByConditionDetail(ViewState["Condition2"].ToString()); //当客户端发送请求时,从表显示所选线路的明细,且主表保持当前页 if(Request["LINECODE"]!=null) { if(this.ddlField.SelectedItem.Text == "线路代码") { ViewState["Condition2"] = string.Format("TBO.{0} like '%{1}%'", ddlField.SelectedValue, txtValue.Text); } else { ViewState["Condition2"] = string.Format("TD.{0} like '%{1}%'", ddlField.SelectedValue, txtValue.Text); }// ViewState["Condition2"] = string.Format("TBO.LINECODE like '%{0}%'", this.grdMain.SelectedItem.Cells[1].Text.ToString()); //所选行记录对应的线路代码 dataSet =reportQuery.GetDeliveryBillByConditionDetail(ViewState["Condition2"].ToString()); dataSet.Tables["tblDetail"].DefaultView.RowFilter = "LINECODE='" + lineCode + "'"; } grdDetail.DataSource= dataSet.Tables["tblDetail"].DefaultView; grdDetail.DataBind(); } }//当主表没记录时,从表也无记录// else// {// grdDetail.DataSource=null;// grdDetail.DataBind();// } } private void btnSearch_Click(object sender, System.EventArgs e) { if (txtValue.Text.Trim().Length == 0 && Session["Condition1"] != null) Session.Remove("Condition1"); else { if(this.ddlField.SelectedItem.Text == "线路代码") { Session["Condition1"] = string.Format("TBO.{0} like '%{1}%'", ddlField.SelectedValue, txtValue.Text); } else Session["Condition1"] = string.Format("TD.{0} like '%{1}%'", ddlField.SelectedValue, txtValue.Text); } grdMain.CurrentPageIndex = 0; grdDetail.CurrentPageIndex = 0; BindData(); } private void grdMain_PageIndexChanged(object source, System.Web.UI.WebControls.DataGridPageChangedEventArgs e) { grdMain.CurrentPageIndex = e.NewPageIndex; currentPage = e.NewPageIndex; BindData(); } private void grdDetail_PageIndexChanged_1(object source, System.Web.UI.WebControls.DataGridPageChangedEventArgs e) { grdDetail.CurrentPageIndex = e.NewPageIndex; BindData(); } }}希望没有把大家吓倒! string str1 = "1,2,3,3,2,1";string str2 = string.Empty;string[] arrStr1 = str1.Split(',');if(arrStr1.Length > 0){ str2 = ","; for(int i=0; i<arrStr1.Length; i++) { if(str2.IndexOf(","+arrStr1[i]+",")<0) str2 += arrStr1[i] + ","; } str2 = str2.Substring(1,str2.Length-2);}Response.Write(str2); string str = "1,2,3,3,2,1";string[] arr_str = str.Split(',');ArrayList al = new ArrayList();for(int i = 0; i < arr_str.Length; i++){ if(!al.contains(arr_str[i])) { al.Add(arr_str[i]); }} 上面的意思是“,1,”才能确定“1”是否在“,1,12,31,”中不然用IndexOf("1")会出现1也在12也在31也在,不能确定1就是指1所以在开始可结束的地方都加上“,”到结束时候再都去掉 {在线等}一个已经查出的DataTable怎么填充一个新的DataTable? 求。net 使用的前台javascript代码,实现全选功能的 .net 2.0 无刷新用户登录 如何掌握.NET思想(菜鸟的问题) 编程添加的服务器控件如何指定其服务器端发生的事件? 谁能提供一个将datagrid中的数据保存为word文件的例子,谢谢!!!急急急!!! 各位晚上好! 可以调用 动态加载的用户控件内 的方法吗? ==如何使VS.NET2005不使用虚拟目录... 如何不让页面中Page_load事件重复执行某代码? 请教WebClient的问题 请问如何去掉字符串中重复的字符,谢谢了。 错误提示
string str = "1,2,3,3,2,1";
string[] arr_str = str.Split(',');
ArrayList al = new ArrayList();
for(int i = 0; i < arr_str.Length; i++)
{
bool isExist = false;
for(int j = 0; j < al.Count; j++)
{
if(arr_str[i].ToString() == al[j].ToString())
isExist = true;
}
if(!isExist)
al.Add(arr_str[i]);
}string newStr = "";
for(int k = 0; k < al.Count; k++)
{
if(newStr.Trim() == "")
newStr += al[k];
else
newStr += "," + al[k];
}Response.Write(newStr);
在一个Web窗体中有:
一个dropdownlist下拉条:ddlField,绑定可以选择的内容有“线路代码”和“线路名称”,他们的value分别为linecode,linename
一个textbox :txtValue
还有一个可以点击的“查找”btnSearch控件
在一个web窗体中两个dataGrid,一个主表grdMain ,一个从表grdDetail 。在grdMain中设置了一个模板列“线路名称”,点击模板列后grdDetail中显示相应的明细记录
首次进入页面时加载数据,从表grdDetail是根据主表grdMain来过滤的,也就是在grdMaster中的行大于零时才会产生grdDetail,在grdDetail中显示的是grdMaster第一行记录的明细 可以在下拉单中选择“线路代码”或是“线路名称”,再在txtValue中输入查找过滤的条件,然后点击btnSearch查找,查找后两个数据表格显示相应的记录。
出错的地方:刚进入页面的时候没有点击任何的模板列,只是直接在主表中翻到第2页,此时我的从表grdDetail中相应地显示出主表第二页第一条记录的明细。但是当我也让从表翻页的时候,主表自动返回到第一页!!这到底是为什么呀?该怎么改?能给点建议吗? 还有就是当我点击模板列从表显示相应的数据后,我再点击主表翻页,从表不会跟着显示主表当前页的第一行明细,而是保持上一次点击的模板列的明细!! 代码如下:
private void Page_Load(object sender, System.EventArgs e)
{
//首次加载数据
if (Request["cp"]!=null)
{
currentPage =Convert.ToInt32(Request["cp"]);
}
if (!IsPostBack)
{BindData();
}
}
private void BindData()
{
ReportQuery reportQuery = new ReportQuery();
DataSet dataSet = null;
if (Session["Condition1"] == null)
{
dataSet = reportQuery.GetAllDeliveryBillMaster();
}
else
{
dataSet =reportQuery.GetDeliveryBillByConditionMaster(Session["Condition1"].ToString());
}
grdMain.CurrentPageIndex = currentPage;
grdMain.DataSource = dataSet.Tables["tblMaster"].DefaultView;
grdMain.DataBind();
//如果主表记录条数 > 0,从表则显示第一条记录的明细
if(dataSet.Tables.Count > 0)
{
if(dataSet.Tables["tblMaster"].Rows.Count > 0)//或者主表点击了翻页
{
string lineCode = Request["LINECODE"];
ViewState["Condition2"] = string.Format("TBO.LINECODE like '%{0}%'", this.grdMain.Items[0].Cells[1].Text.ToString());
dataSet =reportQuery.GetDeliveryBillByConditionDetail(ViewState["Condition2"].ToString());
//当客户端发送请求时,从表显示所选线路的明细,且主表保持当前页
if(Request["LINECODE"]!=null)
{
if(this.ddlField.SelectedItem.Text == "线路代码")
{
ViewState["Condition2"] = string.Format("TBO.{0} like '%{1}%'", ddlField.SelectedValue, txtValue.Text);
}
else
{
ViewState["Condition2"] = string.Format("TD.{0} like '%{1}%'", ddlField.SelectedValue, txtValue.Text);
}
// ViewState["Condition2"] = string.Format("TBO.LINECODE like '%{0}%'", this.grdMain.SelectedItem.Cells[1].Text.ToString()); //所选行记录对应的线路代码
dataSet =reportQuery.GetDeliveryBillByConditionDetail(ViewState["Condition2"].ToString());
dataSet.Tables["tblDetail"].DefaultView.RowFilter = "LINECODE='" + lineCode + "'";
}
grdDetail.DataSource= dataSet.Tables["tblDetail"].DefaultView;
grdDetail.DataBind();
}
}
//当主表没记录时,从表也无记录
// else
// {
// grdDetail.DataSource=null;
// grdDetail.DataBind();
// }
}
private void btnSearch_Click(object sender, System.EventArgs e)
{
if (txtValue.Text.Trim().Length == 0 && Session["Condition1"] != null)
Session.Remove("Condition1");
else
{
if(this.ddlField.SelectedItem.Text == "线路代码")
{
Session["Condition1"] = string.Format("TBO.{0} like '%{1}%'", ddlField.SelectedValue, txtValue.Text);
}
else
Session["Condition1"] = string.Format("TD.{0} like '%{1}%'", ddlField.SelectedValue, txtValue.Text);
}
grdMain.CurrentPageIndex = 0;
grdDetail.CurrentPageIndex = 0;
BindData();
} private void grdMain_PageIndexChanged(object source, System.Web.UI.WebControls.DataGridPageChangedEventArgs e)
{
grdMain.CurrentPageIndex = e.NewPageIndex;
currentPage = e.NewPageIndex;
BindData();
} private void grdDetail_PageIndexChanged_1(object source, System.Web.UI.WebControls.DataGridPageChangedEventArgs e)
{
grdDetail.CurrentPageIndex = e.NewPageIndex;
BindData();
} }
}希望没有把大家吓倒!
string str2 = string.Empty;
string[] arrStr1 = str1.Split(',');
if(arrStr1.Length > 0)
{
str2 = ",";
for(int i=0; i<arrStr1.Length; i++)
{
if(str2.IndexOf(","+arrStr1[i]+",")<0)
str2 += arrStr1[i] + ",";
}
str2 = str2.Substring(1,str2.Length-2);
}
Response.Write(str2);
string[] arr_str = str.Split(',');
ArrayList al = new ArrayList();
for(int i = 0; i < arr_str.Length; i++)
{
if(!al.contains(arr_str[i]))
{
al.Add(arr_str[i]);
}
}
“,1,”才能确定“1”是否在“,1,12,31,”中
不然用IndexOf("1")会出现1也在12也在31也在,不能确定1就是指1
所以在开始可结束的地方都加上“,”到结束时候再都去掉