str = "abcdabcdesabc"要求:只替换第一次出现"b"的字符为1,后面出现的b不改
即 "a1cdabcdesabc"

解决方案 »

  1.   

    在数据库中就好弄了
    declare @str  varchar(20)
    set @str= 'abcdabcdesabc' select stuff(@str,charindex('b',@str),1,'1')/*
                                                                                                                                                                                                                                                                     
    ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- 
    a1cdabcdesabc(所影响的行数为 1 行)
    */
      

  2.   

    用FOR循环拆成CHAR类型的,进行比较,找到相应的字符后,BREAK,然后截取前后的字符窜,组成一个新的字符窜,就OK了....
      

  3.   

    string str = "abcdabcdesabc";
            for (int i = 0; i < str.Length;i++ )
            {
                if (str[i].ToString() == "b")
                {
                    str=str.Replace(str[i].ToString(), "1");
                    break;
                }
            }
            Response.Write(str);
            
      

  4.   

    方法可以有很多
    string str = "abcdabcdesabc";
    int index = str.IndexOf("b");
    if (index > -1)
    {
        str = str.Substring(0, index) + "1" + str.Substring(index + 1);
    }
    richTextBox2.Text = str;string str = "abcdabcdesabc";
    StringBuilder sb = new StringBuilder();
    bool flag = false;
    foreach (char c in str)
    {
        if (c != 'b')
        {
            sb.Append(c);
        }
        else if (!flag)
        {
            sb.Append('1');
            flag = true;
        }
        else
        {
            sb.Append(c);
        }
    }
    str = sb.ToString();
    richTextBox2.Text = str;string str = "abcdabcdesabc";
    str = Regex.Replace(str, @"(?<=^[^b]*)b", "1", RegexOptions.IgnoreCase);
    richTextBox2.Text = str;