有一个控件里的值比如说为: ,11,12,13,50,80,120,122
我想替换里面的,12为空,但不想让其他像120和122的也跟着被替换
该怎么写,只替换我指定的字符串?
var str=",11,12,13,50,80,120,122";
var fstr=",12";
var reg=new RegExp(fstr+"(?!\d)","g");
str=str.replace(reg,"");
这样写好像不行,该怎么写啊?

解决方案 »

  1.   

    var fstr="12,"; 
    这样变一下就可以了
      

  2.   

    或者是var fstr=",12,"; 
    最好是用这个
    这个替换成一个,就可以了
      

  3.   


    var str=",11,12,13,50,80,120,122"; 
    var fstr=",12,"; 
    var reg=new RegExp(fstr+"(?!\d)","g"); 
    str=str.replace(reg,""); 
      

  4.   

    但如果str=",11,13,50,80,120,122,12"; 
    就不行了。这个fstr和str都是不固定的。
      

  5.   


    用点点技巧就行了,正则就不用了:str=",11,13,50,80,120,122,12";
    var fstr=",12,"; 
    str=str+",";
    str=str.replace(str,fstr,"");
    str=str.Substring(0,s.Length-1);
      

  6.   

    上面手误了,改正下:str=",11,13,50,80,120,122,12";
    var fstr=",12,"; 
    //前面加逗号
    if (str.Substring(0,1)!=",") str=","+str;
    //后面加逗号
    if (str.Substring(str.Length-1,1)!=",") str=str+",";
    str=str.replace(str,fstr,"");
    //去掉最后一个逗号
    if (str.Substring(str.Length-1,1)==",") str=str.Substring(0,s.Length-1);
      

  7.   

    fstr如果不是固定的话,也这样处理下:
    str=",11,13,50,80,120,122,12";
    var fstr="12"; 
    string newstr=getstr(str,fstr);private string getstr(string str,string fstr)
    {
    //前面加逗号
    if (fstr.Substring(0,1)!=",") fstr=","+fstr;
    //后面加逗号
    if (fstr.Substring(fstr.Length-1,1)!=",") fstr=fstr+",";//前面加逗号
    if (str.Substring(0,1)!=",") str=","+str;
    //后面加逗号
    if (str.Substring(str.Length-1,1)!=",") str=str+",";
    str=str.replace(str,fstr,"");
    //去掉最后一个逗号
    if (str.Substring(str.Length-1,1)==",") str=str.Substring(0,s.Length-1);retrun str;
    }
      

  8.   

    那就用邪恶的方法吧...
     string str = "12,12,12,12,1234512,12";
     string compare = "12";
     string[] results = str.Split(',');
     StringBuilder sb = new StringBuilder();
     foreach (string s in results)
     {
       if (!compare.Equals(s))
       {
         sb.Append(s).Append(",");
       }
      }
     Console.WriteLine(sb.ToString().Substring(0,sb.ToString().Length-1));//sb.Tostring()去掉最后一个字符就是所要的结果
     Console.ReadKey();
      

  9.   

    我写了一个函数:
     private string ReplaceString(string originalString, string replaceString)
        {
            string strResult = string.Empty;
            string[] arr = originalString.Split(',');
            for (int i = 0; i < arr.Length; i++)
            {
                if (arr[i].ToString() == "12")
                {
                    strResult = strResult + "," + string.Empty;
                }
                else
                {
                    strResult = strResult + "," + arr[i].ToString();
                }
            }
            return strResult = strResult.Substring(1);
        }应用:
     string str = "  ,11,12,13,50,80,120,122 ";
     ReplaceString(str,"12");