字符串处理方法[转帖]

两个字符串,每个字符串都是由名称字符串=值字符串形式组成,中间间隔为一个分号加空格

字符串a:
名称1=任意字符串1; 名称2=任意字符串2; ...; 名称n=任意字符串n
字符串b
名称5=任意字符串5; 名称1=任意字符串6;...; 名称m=任意字符串m

现在要处理字符串a,使之变成:
名称1=任意字符串6; 名称2=任意字符串2; 名称n=任意字符串n; 名称5=任意字符串5; 名称m=任意字符串m

也就是如果字符串a中的一个名称在字符串b中也有,则其值由字符串b中名称对应的值取代。如果字符串b中的名称在a中不存在,则在a中添加名称及值。当然也要用分号加一个空格间格。

例如
string a="wang=asdf; li=yuio; zhao=qwewteqyrqyreqq; qian=dsahjdglsdagdjsalg";
string b="zhou=dsagdsagsdahag; wang=xxxxxxxxxxyyyyyyyyyyzzzzzzzzzz; qian=ghjk; wu=saghdsaklg";
则经过处理应该a="wang=xxxxxxxxxxyyyyyyyyyyzzzzzzzzzz; li=yuio; zhao=qwewteqyrqyreqq; qian=ghjk; zhou=dsagdsagsdahag; wu=saghdsaklg"

求一个讲究效率的转换方法

  using System.Collections.Specialized; //StringDictionary -> 键值集合, Key 不区分大小写..

 

          string a = "wang=asdf; li=yuio; zhao=qwewteqyrqyreqq; qian=dsahjdglsdagdjsalg";

            string b = "zhou=dsagdsagsdahag; wang=xxxxxxxxxxyyyyyyyyyyzzzzzzzzzz; qian=ghjk; wu=saghdsaklg";

            string[] aArray = a.Split(new char[] { '=', ';' }, StringSplitOptions.None);

            string[] bArray = b.Split(new char[] { '=', ';' }, StringSplitOptions.None);

            StringDictionary dic = new StringDictionary();

            for (int i = 0; i < aArray.Length-1; i+=2)

            {

                dic[aArray[i]] = aArray[i + 1];

            }

            for (int i = 0; i < bArray.Length - 1; i += 2)

            {

                dic[bArray[i]] = bArray[i + 1];

            }

            StringBuilder sb = new StringBuilder();

            foreach (string key in dic.Keys)

            {

                sb.Append(key +"=" +dic[key] +";");

            }

            Console.WriteLine(sb.ToString());

 

 

转自:http://topic.csdn.net/u/20080328/17/0661d120-ac0a-419b-95c5-1a25b3a9abe4.html

原文地址:https://www.cnblogs.com/liangwei389/p/1202852.html