比如一个字符串,string str = "1,2,3,3,2,1";
去掉重复的部分,得到 str= "1,2,3";谢谢大家了

解决方案 »

  1.   

    方法应该比较多,这里提供一个方法给你参考:
    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);
      

  2.   

    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();
    }   }
    }希望没有把大家吓倒!
      

  3.   

    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);
      

  4.   

    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]);   
             }
    }
      

  5.   

    上面的意思是
    “,1,”才能确定“1”是否在“,1,12,31,”中
    不然用IndexOf("1")会出现1也在12也在31也在,不能确定1就是指1
    所以在开始可结束的地方都加上“,”到结束时候再都去掉