string a;
string b;
假如a="abcdefg",b="bcde"
判断如果b属于a,则b倒序排列一下,然后替换b在a中的位置输出一段新的字符串例如 初始化a="abcdefg",b="bcde"
通过调用一个方法输出a="aedcbfg"不能使用indexof()和replace()方法

解决方案 »

  1.   

    只提供思路,把string看做是一个个char
    依次比较然后替换
    类似重写indexof和replasce方法
      

  2.   


      既然不能使用indexof()和replace()方法,那就用数组做
      

  3.   

    不用太考虑性能的话string a = "abcdefg", b = "bcde";
    if (a.Contains(b))
        a = a.Replace(b, new string(b.ToCharArray().Reverse().ToArray()));
      

  4.   


            string MyReplace(string a, string b)
            {
                int index = -1;
                for (int i = 0; i < a.Length; i++)
                {
                    if (a[i] == b[0])
                    {
                        bool exsits = true;
                        for (int j = 1; j < b.Length; j++)
                        {
                            if (a[i + j] != b[j])
                                exsits = false;
                        }
                        if (exsits)
                        {
                            index = i;
                            break;
                        }
                    }
                }
                if (index == -1)
                    return a;
                char[] cs = new char[a.Length];
                for (int i = 0; i < a.Length; i++)
                {
                    if (i >= index && i < index + b.Length)
                        cs[i] = b[b.Length - 1 - (i - index)];
                    else
                        cs[i] = a[i];
                }
                return new string(cs);
            }
      

  5.   


    string StrReplace(string a, string b)
        {
            string returnValue = string.Empty;
            for (int i = 0; i < a.Length - b.Length; i++)
            {
                if (a.Substring(i, b.Length) == b)
                {
                    char[] newArray = b.ToCharArray();
                    Array.Reverse(newArray);
                    returnValue = a.Remove(i, b.Length).Insert(i, new String(newArray));
                }
            }
            return returnValue;
        }
      

  6.   


       string a="abcdefg";
            string b = "bcde";
            if (a.Contains(b))
            {
                int count = b.Length - 1;
                char[] chArr = new char[b.Length];
                for (int i = 0; i <= count; i++)
                {
                    chArr[i] = b[count - i];
                }
                int index = a.IndexOf(b);
                string resultStr = a.Remove(index,b.Length).Insert(index, new string(chArr));
                Response.Write(resultStr);
            }
      

  7.   

    哪位大牛能用Regex给实现下????????????????????????????
      

  8.   


            static string MyReplace(string a, string b)
            {
                return Regex.Replace(a, b, match => { char[] cs = match.Value.ToCharArray(); Array.Reverse(cs); return new string(cs); });
            }
      

  9.   

     static void Main(string[] args)
            {
                string a = "abcdefg";
                string b = "bcde";
                string[] s_a=a.Split(new string[] { b }, StringSplitOptions.RemoveEmptyEntries);
                if (s_a.Length > 0)
                {
                    char[] c_b = b.ToCharArray().Reverse().ToArray();
                    string temp = new String(c_b);
                    StringBuilder sBuild=new StringBuilder();
                    for (int i = 0; i < s_a.Length - 1; i++)
                    {
                        sBuild.AppendFormat("{0}{1}",s_a[i],temp);
                    }
                    sBuild.Append(s_a[s_a.Length-1]);
                    a = sBuild.ToString();
                }
                
                Console.WriteLine(a);
            }
      

  10.   


     string a="abcdefg";
            string b = "bcde";       
            if (a.Contains(b))
            {
                int count = b.Length - 1;
                char[] chArr = new char[b.Length];
                for (int i = 0; i <= count; i++)
                {
                    chArr[i] = b[count - i];
                }            string str = new string(chArr);            int index = 0;
                for (int i = 0; i < a.Length; i++)
                {
                    if (a[i] == b[0])
                    { 
                      index = i;
                    }
                }           
                string resultStr = a.Remove(index,b.Length).Insert(index, new string(chArr));
                Response.Write(resultStr);
      

  11.   

       string a = "abcdefg";
                string b="bcde";
                var dest=a.ToCharArray().Intersect(b.ToCharArray()).Reverse();//取出重复的值并且反转
                char[] c=b.ToCharArray();
                string[] arrstr=a.Split(c);
                 string news=arrstr[0]+new string(dest.ToArray()) + arrstr[arrstr.Length-1];
                 Console.WriteLine(news);
      

  12.   

     private string changeStr(string longer,string shorter)
            {            
                if (longer.Contains(shorter))
                {
                    char[] l = longer.ToCharArray();
                    char[] s = shorter.ToCharArray();
                    char[] sr = new char[s.Length];
                    int startindex = -1;
                    for (int i = 0; i < l.Length; i++)//长字符串
                    {
                        for (int j = 0; j < s.Length; j++)//短字符串
                        {
                            if (l[i] == s[j])//有一位相同,检查余下位数是否相同
                            {
                                startindex = i;
                                int tmp = i+1;
                                sr[0] = s[s.Length-1];
                                for (int k = 1; k < s.Length; k++)
                                {
                                    sr[k] = s[s.Length - 1 - k];
                                    if (l[tmp] != s[k])//非全部相同将继续循环
                                    {
                                        startindex = -1;
                                        sr = new char[s.Length];                                    
                                        break;
                                    }
                                    tmp++;
                                }                            
                            }
                            break;
                        }
                        if (startindex != -1)
                            break;
                    }                for (int i = 0; i < s.Length; i++)
                    {
                        l[startindex + i] = sr[i];
                    }
                    return new string(l);
                }
                return null;
            }
    不够精简……
      

  13.   


            static void Main(string[] args)
            {
                string original1 = "abcdefg";
                string original2 = "bcd";
                char[] chr2Reverse = original2.ToCharArray();
                Array.Reverse(chr2Reverse);
                string reverseStr = new String(chr2Reverse);
                if (original1.Contains(original2))
                {
                    string[] original1Split = original1.Split(original2.ToCharArray(), StringSplitOptions.RemoveEmptyEntries);
                    System.Text.StringBuilder sb = new System.Text.StringBuilder();
                    for (int i = 0; i < original1Split.Length; i++)
                    {
                        sb.Append(original1Split[i]);
                        if (i + 1 < original1Split.Length)
                        {
                            sb.Append(reverseStr);
                        }
                    }               
                    Console.WriteLine(sb.ToString());
                }            Console.ReadLine();
             }
      

  14.   

    看到很多的算法似乎只替换了一次。
    如果初始化a = "abbaab",b = "ab";
    调用方法后是不是输出这样的结果:a = "bbbaaa";
      

  15.   


    按LZ的意思,正确的结果应该是bababa
      

  16.   

      string inputb="def"; //输入B
                string inputa = "abcdef";//输入A
                string outputb = string.Empty;//输出
                if (inputa.Contains(inputb))
                {                string[] strarry = inputa.Split(inputb.ToCharArray(),  System.StringSplitOptions.RemoveEmptyEntries);
                    for (int i = inputb.Length - 1; i >= 0; i--)
                    {
                        outputb += inputb.Substring(i, 1);
                    }
               
                    //textBox_OUTPUT.Text = textBox_A.Text.Replace(inputb, outputb);
                    if (strarry.Length > 1)//B在A中间
                    {
                        outputb = strarry[0] + outputb + strarry[1];
                    }
                    else if (strarry.Length ==1)//B包含A开头或结尾
                    {
                        outputb = strarry[0] + outputb;
                    }
                    //B=A,直接输出outputb
                }
            }
      

  17.   

    只是“不能使用indexof()和replace()方法”嘛...C#嘛,你们搞那么复杂干什么...一句的事儿...
    return string.Join(new string(b.Reverse().ToArray()),a.Split(new string[]{b}))
      

  18.   


    Split()的参数是不是只能字符啊。。