读书人

C# 处置字符串

发布时间: 2012-10-25 10:58:57 作者: rapoo

C# 处理字符串

C# code
string oldStr = "{1:\"a\"},{2:\"a\"},{3:\"a\"},{4:\"b\"},{5:\"b\"},{6:\"b\"},{7:\"c\"},{8:\"c\"},{9:\"c\"}";string newStr = "{1:\"a\"},{5:\"a\"},{9:\"a\"},{2:\"b\"},{7:\"b\"},{6:\"b\"},{4:\"c\"},{3:\"c\"},{8:\"c\"}";


我想通过一个方法,如
C# code
public static void iMove(string oldStr,string newStr){     .....}


C# code
//输出//2 移动到了 b 第一个//3 移动到了 c 第二个//4 移动到了 c 第一个//5 移动到了 a 第二个 //7 移动到了 b第二个 //8 移动到了 c 第三个 //9 移动到了 a 第三个

oldStr和newStr的顺序是可变的
iMove这个方法该怎么实现,最好有源代码。求解,先谢谢

[解决办法]
C# code
using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Text.RegularExpressions;using System.Threading.Tasks;namespace ConsoleApplication1{    class Program    {        static void Main(string[] args)        {            string oldStr = "{root:[{DivId:\"div1\",DivWidth:200,DivHeight:167,leftPosition:50,topPosition:34,DivParentId:\"lefts\"},{DivId:\"div10\",DivWidth:200,DivHeight:135,leftPosition:50,topPosition:208,DivParentId:\"lefts\"},{DivId:\"div9\",DivWidth:200,DivHeight:245,leftPosition:50,topPosition:350,DivParentId:\"lefts\"},{DivId:\"div8\",DivWidth:600,DivHeight:711,leftPosition:260,topPosition:34,DivParentId:\"centers\"},{DivId:\"div6\",DivWidth:600,DivHeight:551,leftPosition:260,topPosition:752,DivParentId:\"centers\"},{DivId:\"div3\",DivWidth:600,DivHeight:135,leftPosition:260,topPosition:1310,DivParentId:\"centers\"},{DivId:\"div5\",DivWidth:600,DivHeight:197,leftPosition:260,topPosition:1452,DivParentId:\"centers\"},{DivId:\"div4\",DivWidth:200,DivHeight:143,leftPosition:870,topPosition:34,DivParentId:\"rights\"},{DivId:\"div2\",DivWidth:200,DivHeight:135,leftPosition:870,topPosition:184,DivParentId:\"rights\"},{DivId:\"div7\",DivWidth:200,DivHeight:593,leftPosition:870,topPosition:326,DivParentId:\"rights\"}]}";            string newStr = "{root:[{DivId:\"div6\",DivWidth:200,DivHeight:167,leftPosition:50,topPosition:34,DivParentId:\"lefts\"},{DivId:\"div9\",DivWidth:200,DivHeight:135,leftPosition:50,topPosition:208,DivParentId:\"lefts\"},{DivId:\"div10\",DivWidth:200,DivHeight:245,leftPosition:50,topPosition:350,DivParentId:\"lefts\"},{DivId:\"div8\",DivWidth:600,DivHeight:711,leftPosition:260,topPosition:34,DivParentId:\"centers\"},{DivId:\"div1\",DivWidth:600,DivHeight:551,leftPosition:260,topPosition:752,DivParentId:\"centers\"},{DivId:\"div3\",DivWidth:600,DivHeight:135,leftPosition:260,topPosition:1310,DivParentId:\"centers\"},{DivId:\"div5\",DivWidth:600,DivHeight:197,leftPosition:260,topPosition:1452,DivParentId:\"centers\"},{DivId:\"div4\",DivWidth:200,DivHeight:143,leftPosition:870,topPosition:34,DivParentId:\"rights\"},{DivId:\"div2\",DivWidth:200,DivHeight:135,leftPosition:870,topPosition:184,DivParentId:\"rights\"},{DivId:\"div7\",DivWidth:200,DivHeight:593,leftPosition:870,topPosition:326,DivParentId:\"rights\"}]}";            iMove(Regex.Match(oldStr, @"{root:\[(.+)\]}").Groups[1].Value, Regex.Match(newStr, @"{root:\[(.+)\]}").Groups[1].Value);        }        static void iMove(string oldStr, string newStr)        {            var data1 = oldStr.Split(new string[] { "},{" }, StringSplitOptions.None).Select(x => new { id = Regex.Match(x, @"(?<=DivId:"")\w+?(?="")").Value, value = Regex.Match(x, @"(?<=DivParentId:"")\w+?(?="")").Value }).GroupBy(x => x.value).SelectMany(x => x.Select((y, i) => new { y.id, y.value, order = i + 1 }));            var data2 = newStr.Split(new string[] { "},{" }, StringSplitOptions.None).Select(x => new { id = Regex.Match(x, @"(?<=DivId:"")\w+?(?="")").Value, value = Regex.Match(x, @"(?<=DivParentId:"")\w+?(?="")").Value }).GroupBy(x => x.value).SelectMany(x => x.Select((y, i) => new { y.id, y.value, order = i + 1 }));            var diff = data2.Where(x => data1.Single(y => y.id == x.id).order != x.order || data1.Single(y => y.id == x.id).value != x.value).OrderBy(x => x.id);            foreach (var item in diff)                Console.WriteLine("{0}移动到{1}的第{2}个。", item.id, item.value, item.order);        }    }} 

读书人网 >C#

热点推荐