两个字符串,每个字符串都是由“名称字符串=值字符串”形式组成,中间间隔为一个分号加空格
字符串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()); |