比如:
     string str1 = "中华人", str2 = "人民共", str3 = "共和国";
     上面上面三个字符串合成一个字符串,他的值为“中华人民共和国”
    
     

解决方案 »

  1.   

    最简单的方式:string str=str1+str2+str3;
      

  2.   

    str1  =str1 +str2+str1 
      

  3.   

    int i,j,nLen,nLen1,nLen2,nStringCunt;
    string sRet="",sTmp="";for(i=0;i>nStringCunt-1;i++)
    {
        nLen1=string[i].Length();
        nLen2=string[i+1].Length();
        nLen=nLen1>nLen2?nLen2:nLen1;
        for (j=1;j>=nLen;j++)
          {
              if(string[i].substring(nLen1-j,j)<>string[i+1].substring(1,j))
                 {
                     string[i+1]=string[i+1].substring(j,nLen2-j);
                     break;
                 }
          }
    }
    for(i=0;i>nStringCunt;i++)
    {
         sRet=sRet+string[i];
    }
    return sRet;
    大概的思路就是这样子的,没有测试过
      

  4.   

    ArrayList.Contains   方法线性查询,去msn上看看
      

  5.   

    string str1 = "中华人", str2 = "人民共", str3 = "共和国";
                str1 = str1.Substring(0, str1.Length - 1);
                str3 = str3.Substring(1, str1.Length );
                label1.Text = str1 + str2 + str3;
      

  6.   

    那这样的呢?string st1="名不正则言不顺",st2="言不顺则事不成",st3="事不成则礼乐不兴",st4="礼乐不兴则刑罚不中",st5="刑罚不中则民无所措手足";
      

  7.   

    这也叫解决问题????????????
    str1="中华人民", str2="人民共和", str3="共和国";这样一来你怎么办????
      

  8.   

     private string StringJoin(string Str1, string Str2)
            {
                int intI = 0;
                if (Str1.Length < Str2.Length)
                {
                    intI = Str1.Length;
                }
                else
                {
                    intI = Str2.Length;
                }
                do
                {
                    if (Str1.Substring(Str1.Length - intI, intI) == Str2.Substring(0, intI))
                    {
                        break; 
                    }
                    else
                    {
                        intI = intI - 1;
                        if (intI == 0) break; 
                    }
                }
                while (true);
                return Str1 + Str2.Substring(intI);
            }
    调用:
    str1 = StringJoin(str1, str2);
    str1 = StringJoin(str1, str3);
    MessageBox.Show(str1);
      

  9.   


     string str1 = "中华人"; string str2 = "人民共"; string str3 = "共和国";
     str1 = str1 + GetFilterString(str1, str2) + GetFilterString(str2, str3);
    public string GetFilterString(string str1, string str2)
            {
                string sTempValue = "";
                for (int i = str2.Length  ; i >= 1; i--)
                {
                    if (str1.Substring( str1.Length- i  , i ) == str2.Substring(0,i ))
                    {
                        if (i == str2.Length ) { return ""; }
                        sTempValue = str2.Substring(i, str2.Length - i );
                        break;
                    }
                }
                return sTempValue == "" ? str2 : sTempValue;
            }
    感觉意义不大.
      

  10.   


    string str1 = "中华人", str2 = "人民共", str3 = "共和国"; 
    string str = str1 + str2 + str3;
    string output = Regex.Replace(str,@"(\w)(?=[^\1]*\1)","");
    //结果是将重复的去掉 只保留最后一个  “中华人民共和国”
    //23楼的结果为 “名正言顺事成礼乐兴刑罚不中则民无所措手足”
      

  11.   

    如果只有这种情况的话,很简单啊:str= str1.Substring(0, str1.Length-1)+str2.Substring(0, str2.Length-1) +str3.Substring(0, str3.Length-1); 
    如果各种情况都有,还是用正则表达式好!如楼上
      

  12.   

    28楼的大侠能解释下Regex.Replace(str,@"(\w)(?=[^\1]*\1)","");
    方法里的参数都是什么意思?
      

  13.   


    Regex.Replace(str,@"(\w)(?=[^\1]*\1)",""); 
    //哎 编译器里看一下不就行了吗!!!
    //第一个,源字符串;第二个,要匹配的字符串,这里是正则来读取得;第三个,替换成的字符串。
      

  14.   

            static string MergeStr(string[] strs)
            {
                if (strs.Length > 1)
                {
                    StringBuilder strB = new StringBuilder();
                    strB.Append(strs[0]);                for (int i = 0; i < strs.Length - 1; i++)
                    {
                        string Currentstr = strs[i];
                        string Nextstr = strs[i + 1];
                        int IndexOfNextstr = Nextstr.IndexOf(Currentstr[Currentstr.Length - 1]);                    if (Currentstr[Currentstr.Length - 1 - IndexOfNextstr] == Nextstr[0])
                        {
                            strB.Append(Nextstr.Substring(IndexOfNextstr + 1));
                        }
                    }                return strB.ToString();
                }
                else if (strs.Length == 1)
                {
                    return strs[0];
                }
                else
                {
                    return string.Empty;
                }
            }
      

  15.   


    //28楼的可能有点问题。用下列的检验,试试看。
    string str1 = "中人华人民", str2 = "人民共和", str3 = "共和国";
    //结果:“中华人民共和国”而不是“中人华人民共和国”
    //敢问楼主,“中人华人民共和国”这个应该是所要的吧?//试试看我的代码            string str1 = "中人华人民", str2 = "人民共和", str3 = "共和国";
                string str = string.Format("{0}{1}{2}", str1, str2, str3);
                
                Regex objRegex = new Regex(@"(\S+?)(?=\1)");            //Regex objRegex = new Regex(@"(\w)(?=[^\1]*\1)");            string result = objRegex.Replace(str, "");
                Response.Write(string.Format("Input : {0}<br />Result : {1}<br />", str, result));/*
    结果:
    Input : 中人华人民人民共和共和国
    Result : 中人华人民共和国 
    */
      

  16.   

    输出结果正确。        static void Main(string[] args)
            {
                string[] strs1 = new string[] { "ABC", "CDEF", "EFGH" };
                Console.WriteLine(MergeStr(strs1));            string[] strs2 = new string[] { "中华人", "人民共", "民共和国" };
                Console.WriteLine(MergeStr(strs2));            string[] strs3 = new string[] { "中华人", "人共", "共" };
                Console.WriteLine(MergeStr(strs3));            Console.ReadKey();
            }
      

  17.   

    // .net 3.0 or abovestring s1 = "中人华人民", s2 = "人民共和", s3 = "共和国";
    var result = new String(s1.ToCharArray().Union(s2.ToCharArray()).Union(s3.ToCharArray()).ToArray());